簡單地說,我有一個類實現:超]建設
@implementation ClassB: ClassA
-(id) init {
if (self = [super init]) {
...
}
return self;
}
@end
和類別,以兩種形式:
1:
@implementation ClassA (ClassA_Category)
+(id) alloc {
if ([self isEqual: [ClassA class]]) {
return [ClassB alloc];
} else {
return [super alloc];
}
}
@end
2:
@implementation ClassA (ClassA_Category)
+(id) alloc {
return [[ClassB superclass] superclass] alloc];
}
@end
的問題是,這個簡單的初始化:
ClassA *aObj = [[ClassA alloc] init];
對於第一類變種的ClassB
init
被調用,但對於第二種情況 - 沒有。
爲什麼?這兩個alloc
結構具有相同的含義嗎?
謝謝Chuck,這很明顯:) – 2011-02-23 08:03:53