2011-05-17 102 views
2

我总是发现,如果我创建一个委托,然后指定一个类来顺应它,我已经明确地导入.h文件中成类委托,否则我得到一个错误,指出该协议不能被发现的?为什么我必须导入我的委托头文件?

我缺少某处一个全局设置,让我的项目找到我的委托?

谢谢

回答

5

这是正常的和预期的。否则,编译器总是必须在能够编译与大多数头文件完全无关的代码之前解析所有头文件。

+0

我明白这一点,但我总是看到例子,其中进口没有发生,它不会出现在.PCH文件?这就是为什么我很困惑如何一些人代码似乎不执行和导入,并没有错误? – user7865437 2011-05-17 14:05:33

+0

你一定在谈论iOS SDK协议 - 特别是关于UIKit,而不是自己的代码定义的自定义协议呢? 对于这些情况,请查看UIKit/UIKit.h头文件并学习:D ...它们只包含所有相关头文件。 – Till 2011-05-17 14:07:30

+0

否,林谈论示例代码从书籍购买我AKA:#进口 #进口 “PRPSplashScreen.h” @interface AppDelegate_iPhone:NSObject的 {} @property(非原子,保留)IBOutlet UIWindow *窗口; @property(nonatomic,retain)IBOutlet UINavigationController * navController; @property(nonatomic,retain)IBOutlet PRPSplashScreen * splashScreen; @end 但等待! OMG,我是一个笨蛋!我只是在头文件“PRPSplashScreen.h”DOH中实现了导入的代理!对不起,张贴一个愚蠢的问题: - (((( – user7865437 2011-05-17 14:15:53

0

我觉得这是标准的C的东西。在使用之前,您需要导入源文件。委托文件只是另一个头文件。

1

,如果你希望它被添加到每个类的头,您可以将其添加到您的MyApp_Prefix.pch文件。这显然有一些构建性能问题,但除此之外,不应该是一个问题。

+1

+1好的解决办法 - !即使我个人不喜欢这样的解决方案,因为它让整个依赖逻辑更难理解为第三方编码人员看你的代码。 – Till 2011-05-17 14:04:47

+0

@Till:是的,我不这样做是因为你指定的原因,但我想我'提供它。 – 2011-05-17 14:06:24

相关问题