Все, что я пытаюсь понять, объективный процесс времени выполнения объекта C
Из ссылок на объекты будет вызван метод + Initialize объекта, когда он впервые получит вызов некоторого метода.Я запускаю тестовый файл, как показано ниже.Интересно, почему эти объекты получили только вызов + load.
// InitializeTest.h
@interface InitializeTest : NSObject {
@private
}
- (void) show;
@end
@interface InitializeTest(Category)
+ (void) load;
+ (void) initialize;
@end
@interface InitializeTestSub : InitializeTest {
@private
}
- (void) showSub;
@end
@interface InitializeTestSub(Category)
+ (void) load;
+ (void) initialize;
@end
//InitializeTest.m
#import "InitializeTest.h"
@implementation InitializeTest
+ (void) load {
NSLog(@"%s %@",__func__,self);
}
+ (void) initialize {
NSLog(@"%s %@",__func__,self);
}
- (void) show {
NSLog(@"%s",__func__);
}
@end
@implementation InitializeTest(Category)
+ (void) load {
NSLog(@"Category %s %@",__func__,self);
}
+ (void) initialize {
NSLog(@"Category %s %@",__func__,self);
}
@end
@implementation InitializeTestSub
+ (void) load {
NSLog(@"%s %@",__func__,self);
}
+ (void) initialize {
NSLog(@"%s %@",__func__,self);
}
- (void) showSub {
NSLog(@"%s",__func__);
}
@end
@implementation InitializeTestSub(Category)
+ (void) load {
NSLog(@"Category %s %@",__func__,self);
}
+ (void) initialize {
NSLog(@"Category %s %@",__func__,self);
}
@end
//test Code
InitializeTest* test = [[InitializeTest alloc] init];
InitializeTestSub *testSub = [[InitializeTestSub alloc] init];
[test class];
[testSub class];
[test show];
[testSub show];
[testSub showSub];
//////////////////////////////////////////////////
//Result
+[InitializeTest load] InitializeTest
+[InitializeTestSub load] InitializeTestSub
Category +[InitializeTest(Category) load] InitializeTest
Category +[InitializeTestSub(Category) load] InitializeTestSub
-[InitializeTest show]
-[InitializeTest show]
-[InitializeTestSub showSub]