2010-04-29 117 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;'以避免导入循环。

相关问题