【问题标题】:Cannot find protocol declaration when protocol is declared in its own .h file在自己的 .h 文件中声明协议时找不到协议声明
【发布时间】:2012-05-10 00:10:07
【问题描述】:

我创建了一个协议

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

// Defines the protocol that must be implemented to be a delegate for UCMapviewController
@protocol UCMapviewDelegate <NSObject>
@required
- (void)pushMapviewRight;

@end

当我进入新文件 -> 协议时,会出现一个询问目标的提示。我检查我的项目。但是,当我单击项目中的 protocol.h 文件并查看文件检查器时,在“目标成员资格”中,我的项目未选中,我无法检查它。

当我将协议放在我的一个视图控制器的头文件中时(例如),我没有收到此错误。我必须在其他地方导入协议吗?

怎么了?非常感谢您的帮助!谢谢

【问题讨论】:

标签: objective-c xcode protocols target


【解决方案1】:

头文件不会进入目标,除非您正在构建框架并希望将头文件复制到框架中的 Headers 文件夹中。构建应用时,只有源文件属于目标。

您会注意到,如果您在项目中选择其他标题之一,它也不会出现在目标中。只有相应的源文件才会。这没关系。如果标头在您的项目中,您可以#import 就可以了。

【讨论】:

  • 但是如果我导入协议(如果是,导入到符合它的类??),这不是违背了它的目的吗?我的意思是,我的“AppDelegate”没有导入 UIApplicationDelegate.h ?!
  • @MJB: UIApplicationDelegate.h 肯定是由你的AppDelegate.m 类导入的,通过导入&lt;UIKit/UIKit.h&gt;
  • 似乎我完全误解了这一点,谢谢大家!所以我必须在我想“使用”它的每个文件中导入protocol.h,无论是实现还是委托属性?
  • @MJB: 不。声明符合协议的类的标头应该 #import 协议标头,现在所有触及该类的东西都会得到它(因为它们已经是 @ 987654326@ing 类的标题)。
猜你喜欢
  • 1970-01-01
  • 2011-09-20
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多