在Xcode中找不到协议声明

时间:2010-04-29 12:13:31

标签: objective-c xcode

我正在构建应用程序时遇到了一些事情。 我在MyObject1中声明了一个协议,并在其上添加了委托属性。我已将MyObject2指定为MyObject1的委托。我像往常一样以这种方式添加它

@interface MyObject2 : UIViewController <DelegateOfObject1>

但是Xcode说我的协议声明无法找到。我检查了我的代码,但我已经宣布了这个协议。我尝试将MyObject2指定为其他Object的委托。 我像这样编辑我的代码

@interface MyObject2 : UIViewController <UITableViewDelegate,DelegateOfObject1>

但Xcode再次说它无法找到DelegateOfObject1的协议声明。我试图删除我的代码上的DelegateOfObject1并添加指定MyObject作为其他对象的委托,它就像这样。

@interface MyObject2 : UIViewController <UITableViewDelegate,UITabBarDelegate>

未发现任何错误。然后我再次尝试在代码

中再次添加DelegateOfObject1

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

那时Xcode没有在我的代码上发现任何错误。所以我再次尝试在我的代码中删除UITableViewDelegate和UITabBarDelegate。

@interface MyObject2 : UIViewController <DelegateOfObject1>

当时没有发现错误,但这与我以前编写的代码相同。我的代码可能是什么原因造成的呢?

...谢谢

5 个答案:

答案 0 :(得分:57)

错误是由导入循环引起的。

答案 1 :(得分:11)

我已将我的协议声明放在单独的文件中并将其导入MyObject2

答案 2 :(得分:4)

错误必须在导入循环中。

我在两个类中都导入了“AppDelegate.h”。我从声明协议的类中删除了它,错误消失了。  :)

答案 3 :(得分:2)

你在做什么

#import "NameOfDelegate.h" 

MyObject标题的顶部?

答案 4 :(得分:0)

使用&#39; @class MyObject;&#39;为了避免导入循环。