我試圖實現一個協議。如何將值傳遞給@protocol
我已經看過文檔here,我理解這些概念,但我認爲我錯過了一些東西。
我想讓一個用戶點擊表格視圖中的文件名觸發'didSelectRowAtIndexPath',它將依次通知委託,用戶選擇了一個文件(觸發委託中的didSelectFileName)並傳遞文件名。我宣佈協議如下:
@protocol FileList <NSObject>
- (void)didSelectFileName:(NSString *)fileName;
@end
我的問題是:
- 我如何設置文件名「」值,這樣,當「didSelectFileName」被稱爲它有它的當前值
- 我如何告訴我的代碼在代理中觸發'didSelectFileName'。
當你簡單地將代表強制轉換爲'id'時,你不需要較慢的' - [respondsToSelector:]'因爲你已經知道它響應那個選擇器,因爲在給定的協議中它沒有被定義爲' @ optional'。如果你說委託符合協議,但沒有實現所有協議所需的方法,這是一個編程錯誤(並且編譯器會給出警告)。 –
2011-07-20 12:59:31
@WTP我同意你的看法,但有時如果我們沒有實現協議方法,編譯器只會在錯誤的時候給出警告,如果我們忘記實現應用程序將會崩潰,但如果我們檢查使用響應選擇器應用程序不會崩潰。這就是我寫這一行的原因。感謝您的信息 –
@WTP您可以在示例中解釋這件事 - (void)doSomethingWithThisObject:(id)aObject ...(id )的用法如果我們使用它,我認爲我們不需要在符合此協議的另一個類的接口中添加名稱。我對嗎?請澄清像MyCLass:UIView 這裏我們不需要添加這個,如果我們傳遞它的方法? –