ДА !!!!
Поскольку метод инициализации класса может вызываться много раз. например когда вы реализуете initialize в родительском классе и не реализуете в подклассе, то сначала вы вызываете подкласс, инициализация родителя будет вызвана дважды.
@implementation BaseClass
+ (void)initialize
{
NSLog(@"BaseClass initialize self=%@, class=%@", self, [BaseClass class]);
}
@end
@interface SubClass : BaseClass
@end
@implementation SubClass
// don't implement the initialize method
@end
==================
теперь, когда вы сначала вызываете SubClass, точно так же, как
[SNSBaseSubLogic alloc]
смотри консоль отладки, вывод:
BaseClass initialize self=BaseClass, class=BaseClass
BaseClass initialize self=SubClass, class=BaseClass
Итак, вы должны использовать
+ (void)initialize
{
if (self == [BaseClass class]) {
NSLog(@"BaseClass initialize self=%@, class=%@", self, [BaseClass class]);
}
}
для обеспечения выполнения тела метода один раз.