在我的項目中我有3個類,我們稱它們爲Apple,Orange和Pear。XCode不正確的警告「沒有實現X協議」
蘋果和橙都有代表屬性。
它們都在頭文件中定義了名爲AppleDelegate和OrangeDelegate的協議。
他們每個人都有類似簽名的初始化:
- (id)initWithDelegate:(id<AppleDelegate>)delegate
- (id)initWithDelegate:(id<OrangeDelegate>)delegate
梨實現OrangeDelegate和定義如下:
@interface Pear : NSObject <OrangeDelegate>
裏面梨,我做這樣的判斷:
Orange *anOrange = [[[Orange alloc] initWithDelegate:self] autorelease];
的結果在此編譯器中警告:
Class 'Pear' does not implement the 'AppleDelegate' protocol
在我看來,編譯器不能識別初始化器中的協議。換句話說,它只能識別此簽名兩種:
- (id)initWithDelegate:(id)delegate
因爲當我點擊在梨初始化「跳轉到」,它帶來了兩個類的選項。
除了重命名我的方法之外,是否有任何方法可以更正此警告?
多數民衆贊成在奇怪,你永遠不會分配梨是一個蘋果代表,東西必須在你的defenitions我認爲 – Daniel 2010-11-19 01:16:41
@丹尼爾 - 這是我的想法,但我肯定它不是。我剛添加蘋果,並出現警告。在此之前,Orange和Pear都存在,並且沒有任何警告地編譯。當我加入蘋果時,Orange或Pear都沒有被修改,但突然他們開始發出警告。 – DougW 2010-11-19 01:19:53