2010-04-29 119 views
21

我在構建應用程序時遇到過一些問題。 我已經在MyObject1中聲明瞭一個協議,並在其上添加了委託屬性。我已經將MyObject2分配爲MyObject1的代理。我以這種方式添加它像往常一樣無法在Xcode中找到協議聲明

@interface MyObject2 : UIViewController <DelegateOfObject1>

但Xcode中說,我該協議的聲明無法找到。我檢查了我的代碼,但是我已經聲明瞭這個協議。我已經嘗試將MyObject2指定爲其他Object的委託。 我已經編輯我的代碼,這樣

@interface MyObject2 : UIViewController <UITableViewDelegate,DelegateOfObject1>

但Xcode中再次說,它無法找到DelegateOfObject1的協議的聲明。我試圖刪除我的代碼上的DelegateOfObject1,並添加分配MyObject作爲其他對象的委託,它就像這樣。已發現

@interface MyObject2 : UIViewController <UITableViewDelegate,UITabBarDelegate>

沒有錯誤。然後我又試着在代碼

@interface MyObject2 : UIViewController <UITableViewDelegate,UITabBarDelegate,DelegateOfObject1>

再次加我DelegateOfObject1當時的Xcode沒有找到我的代碼的任何錯誤。所以我再次嘗試去除我的代碼上的UITableViewDelegate和UITabBarDelegate。

@interface MyObject2 : UIViewController <DelegateOfObject1>

當時沒有錯誤已經找到了,但是這是相同的代碼,我寫之前已經。什麼應該可能是我的代碼上的東西的原因?

謝謝...

+0

'@protocol DelegateOfObject1 @optional - (void)someThingHappensAt:(NSString *)onWhatStuff; @ end' – edie 2010-04-29 12:26:39

+0

FWIW我確實有這個錯誤,但它是由框架搜索路徑中指定的文件夾之一中的一個框架的舊版本的重複副本引起的。舊版本不包含有問題的協議,但包含的文件夾首先出現在搜索路徑順序中。刪除重複的框架解決了錯誤。 – StephenT 2015-05-06 19:17:09

+0

請檢查此解決方案http://stackoverflow.com/questions/6447573/cannot-find-protocol-declaration – 2017-04-08 11:54:14

回答

11

我已經把我的協議,宣言單獨的文件,並導入它MyObject2

+0

更多詳細信息解決問題? – vgonisanz 2012-08-08 07:59:52

+0

將您的@protocol定義從類中刪除。創建一個新的頭文件('File> New> File ...> Header File',粘貼@protocol定義,然後導入頭文件。 – 2016-07-06 15:46:52

1

你在做一個

#import "NameOfDelegate.h" 

在你MyObject頭的頂部?

+0

我已經添加了neccesarry。h文件 – edie 2010-04-29 12:24:02

57

的誤差引起的,由於進口環。

+2

+ 1,對於好的答案。 :) – mAc 2012-03-13 07:24:41

+0

乾杯,這讓我很頭疼! – 2013-04-13 21:45:17

+12

-1,沒有解釋。解釋什麼是導入循環,如何解決。 – 2013-12-14 16:54:16

4

該錯誤必須在導入循環中。

我在兩個類中都導入了「AppDelegate.h」。我將它從聲明瞭協議並且錯誤消失的類中移除。 :)

0

使用'@class MyObject;'以避免導入循環。

相關問題