В Objective-c, как мы можем иметь переменную, область действия которой является целым классом (но не включает подклассы)

Я создал тонны подклассов UITableViewCell. Каждый из которых является подклассом дополнительного класса BGBaseTableViewCell.

Когда меня спросят о высоте, я думаю, что будет полезно рассказать пользователям, каков типичный размер UITableViewCell.

Один из способов сделать это - указать это дважды.

Один, когда я проектирую UITableViewCell в xib, и второй раз, когда я жестко закодировал типичный размер.

Это недостаток дизайна, потому что тогда я должен буду помнить, чтобы изменить жестко закодированный типичный размер, когда я изменяю вещи в xib.

Я не хочу этого Я хочу создать свой UITableViewCell в xib, и когда класс инициализируется, я хочу сохранить высоту по умолчанию.

высота по умолчанию должна быть разной для всех подклассов. Однако он должен быть одинаковым для всех экземпляров этого подкласса.

Если я использую простой ivar, мне придется хранить этот размер по умолчанию для всех экземпляров.

Если я использую статическую переменную, то статическая переменная в BGBaseTableViewCell используется всеми ее подклассами.

И что же мне делать?

Это то, что я делаю сейчас:

static CGFloat defaultHeightSet = 0; //this one is used by all subclasses. I want each subclass have it's own defaultHeightSet, but I want to specify that fact once.

+(void)initialize
{
    BGBaseTableViewCell * typical = [[self alloc]init];
    defaultHeightSet = typical.bounds.size.height;
}
+(CGFloat) defaultHeight
{
    return defaultHeightSet;
}

Ответы на вопрос(2)

Ваш ответ на вопрос