我正在构建应用程序时遇到了一些事情。 我在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>
当时没有发现错误,但这与我以前编写的代码相同。我的代码可能是什么原因造成的呢?
...谢谢
答案 0 :(得分:57)
错误是由导入循环引起的。
答案 1 :(得分:11)
我已将我的协议声明放在单独的文件中并将其导入MyObject2
答案 2 :(得分:4)
错误必须在导入循环中。
我在两个类中都导入了“AppDelegate.h”。我从声明协议的类中删除了它,错误消失了。 :)
答案 3 :(得分:2)
你在做什么
#import "NameOfDelegate.h"
在MyObject
标题的顶部?
答案 4 :(得分:0)
使用&#39; @class MyObject;&#39;为了避免导入循环。