2012-04-03 67 views
5

注意:這與this question類似,但它不相同。我承諾。重複的協議定義警告,但我需要此協議的倍數

我有一系列表格視圖調用模式視圖來排序表內容。爲此,我在一個表視圖控制器的頭文件中設置了一個簡單的協議,並且它工作得很好。然後我複製這個協議到我的其他表視圖控制器,並得到了這樣的警告:「ModalViewDelegate」的

複製協議定義被忽略

現在我意識到,這只是一個警告,但我會而不是每次編譯時都看不到。爲了擺脫警告,我導入了協議最初定義的頭文件。我再一次不完全滿意。將頭文件導入每個表視圖看起來很sl just,所以我可以在沒有警告的情況下使用該協議。

如果您已經閱讀了這篇文章,我感謝您。我的問題是'爲什麼會發生這種情況?在仍然使用相同的協議時,有沒有更好的方法來擺脫這個警告?'

+1

沒有代碼會很難做任何有用的事情。 – CodaFi 2012-04-03 21:01:34

+2

在其自己的頭文件中實現該協議,並在需要時包含該協議。 – 2012-04-03 21:06:05

回答

7

有沒有更好的方法來擺脫這個警告,同時仍然使用相同的協議?

編譯器需要了解協議以便引用它。有兩種方法可以實現這一點:將聲明協議的標頭導入到正在使用它的文件中,或者在這些文件中對協議進行前向聲明:@protocol MyProtocol;。第二個實際上只有在協議需要彼此引用時纔有用(以避免循環導入);如果一個類需要採用該協議,則需要查看該協議中方法的聲明,這意味着它需要看到協議聲明本身,即頭部。

將頭文件導入到每個表視圖看起來很sl just,所以我可以使用沒有警告的協議。

這不是馬虎,這是事情的方式。聽起來好像你可以把協議聲明放在它的自己的頭文件中,並在需要時導入它。

+1

謝謝!我完全忘記了我可以爲協議創建一個頭部。這是我正在尋找的解決方案。 – Squatch 2012-04-03 21:11:39

2

我發現了一個類似的警告,其中@protocol被定義在類的頭文件中。將該協議分解爲自己的.h並將其導入其他地方固定它。