只是爲了增加一些測試:
我已經創建了2 MyClass的類: NSObject的 - > MYCLASS - > My2ndClass
所以:
@implementation Myclass
+(id) sharedClass {
static Myclass *miclase = nil;
miclase = [[self alloc] init];
NSLog(@"%@", [super description]);
return miclase;
}
-(id)init {
self = [super init];
NSLog(@"init de Myclass");
return self;
}
-(NSString *)description {
return @"i am Myclass";
}
@end
AND:
@implementation My2ndClass
+(id) sharedClass {
static My2ndClass *miclase = nil;
miclase = [[super alloc] init];
//miclase = [super init]; CRASH
NSLog(@"%@", [super description]);
return miclase;
}
-(id)init {
self = [super init];
NSLog(@"init de My2ndClass");
NSLog(@"%@", [super description]);
return self;
}
-(NSString *)description {
return @"i am My2ndClass";
}
@end
然後在AppDelegate中:
Myclass *miclase = [Myclass sharedClass];
My2ndClass *mi2ndclase = [My2ndClass sharedClass];
這是控制檯輸出:
2012-09-03 17:18:55.742 Dynamic Typing[2891:207] init de Myclass
2012-09-03 17:18:55.744 Dynamic Typing[2891:207] Myclass
2012-09-03 17:18:55.746 Dynamic Typing[2891:207] init de Myclass
2012-09-03 17:18:55.747 Dynamic Typing[2891:207] init de My2ndClass
2012-09-03 17:18:55.748 Dynamic Typing[2891:207] i am Myclass
2012-09-03 17:18:55.751 Dynamic Typing[2891:207] My2ndClass
像xlc0212告訴記者,當他們被嵌套在正確的消息是:
miclase = [super alloc];
miclase = [miclase init];
此外,如果我做
miclase = [super alloc]
然後
miclase = [super init]
崩潰。
當發送類方法(+)[super description]時,它會記錄類名(Myclass和My2ndClass)。他們本身就是上課,沒有超級對象,是嗎?
你在哪裏找到這段代碼?它看起來不正確。這段代碼是否被放在'alloc'方法中? –
大書呆子牧場第3版。它是在方法裏面:+(Myclass *)sharedStore – gesnazo
我會試着在nslog消息中跟蹤在alloc初始化序列中的myclass – gesnazo