我有2類A和B,B是從A繼承,A是從NSObject.Class甲繼承具有如下功能: - (無效)INIT:目標C init方法和繼承
- (void)init {
if (self = [super init]) {
NSLog(@"A");
}
return self;
}
B具有:
- (id)init {
if (self = [super init]) {
NSLog(@"B");
}
return self;
}
編譯後,我在我的控制檯「A」和「B」的,儘管在B「如果(自= [超級初始化])」不可能是真實的情況,導致其超類的init方法返回void.Any想法?
P.S.我知道init方法必須返回id,我感興趣的是爲什麼這個工作,而不應該。
是,警告「迴歸與空函數」 –
IIRC,一些編譯器會扔掉返回值的void函數,即使你明確地寫出來。它看來,蘋果的不對,但它沒有什麼依賴。這真的是*未定義的行爲發揮作用。 – Chuck