2011-07-08 31 views
0

在我的iOS項目中,我創建了一個名爲「的XMLElement」協議,我對這個協議的方法的問題,它必須返回我的方案的一個實例:協議方式自引用

@protocol XMLElement <NSObject> 
-(XMLElement *) GetParent; 
@end 

的方法GetParent返回是XMLElement協議實現的父元素。

但是這不會編譯!

必須必須返回ID對象?別無退路 ?

回答

2

的XMLElement是一個協議,所以你需要

@protocol XMLElement <NSObject> 
-(id <XMLElement>) GetParent; 
@end 

不相關的問題:它是非典型的有一個方法的名稱以大寫字母開頭。它應該是getParent而不是GetParent

+0

感謝對此事發表評論,偉大的答案! – TheFrancisOne

1

協議是沒有類型它自己的,所以你需要寫:

- (id<XMLElement>) getParent; 

(我建議你堅持了公約,並開始用小寫字母的方法)

+0

謝謝你的回答! – TheFrancisOne

+1

約定還建議你省略'get'。 –