如果我使用額外方法定義NSObject
協議的子協議,然後定義並實現一個聲明與該協議一致的NSObject
類別,我會在編譯時收到警告。編譯器抱怨我的NSObject
類別沒有實現在NSObject
協議中聲明的所有方法。NSObject實現協議上的類別導致未實現方法警告
我不明白爲什麼會出現這種情況。該NSObject
類(在<Foundation/NSObject.h>
宣佈,它符合NSObject
協議(以及冗餘,它實現了這些方法) - ?不應該是足夠
有什麼問題的原因在這裏
示例代碼? - 如果你編譯這個,你會看到在NSObject (CategoryToImplementMyProtocol)
實施警告:
@protocol MyProtocol <NSObject>
- (void)myMethod;
@end
@interface NSObject (CategoryToImplementMyProtocol) <MyProtocol>
@end
@implementation NSObject (CategoryToImplementMyProtocol)
- (void)myMethod
{
NSLog("A la peanut butter sandwiches!");
}
@end
我發現一對夫婦的解決這一問題,但所有的答案都的「做到這一點的解決辦法!」品種,而不是「這是問題的原因「多種(或者只是儘管被接受...)。我知道我可以解決這個問題。我真的很想知道爲什麼它失敗。
對不起!轉錄代碼時是錯誤的(如果它是任何安慰,我在看到你的答案之前編輯了問題 - 儘管我認爲它仍然有意義,不是嗎?因爲'MyProtocol'是'NSObject'的子協議。 –
:)但我認爲這種情況(我甚至沒有意識到會發生)稍微比我回答的更令人困惑。由於在繼承「」的類上實現這樣的類別時沒有這樣的問題,但不要自己採用它。 –
是的,我仍然沒有完全看到問題 - 爲什麼僅僅添加我的類的主要'NSObject'類已經聲明符合'NSObject'協議? –