В 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;
}