我只是创建了一个协议(protocol)头文件:
文件 -> 新建 -> 文件 -> (Cocoa Touch) Objective-C 协议(protocol) -> 下一步 -> 输入协议(protocol)名称 -> 下一步 -> 选择我的目标 -> 创建
当我尝试在协议(protocol)头文件中创建一个方法列表时。我注意到动态打字不起作用。当我在其他文件中键入“NSStr”时,通常会自动弹出一个类列表,所有类都用颜色标记。为什么它在协议(protocol)头文件中不起作用?
顺便说一句,我尝试将协议(protocol)代码放入现有的类文件中,效果很好。为什么它在单独的文件中不起作用?
一些关键字会起作用,例如“void”。弹出列表将显示。但其他关键字如“NSString”将不会被识别。
我的协议(protocol)是这样的:
#import <Foundation/Foundation.h>
@protocol PanToSwitchViewDelegateProtocol <NSObject>
@end
最佳答案
我刚刚做了实验,我看到了完全一样的东西。我认为问题是编译器不会扫描文件,除非它被导入到被扫描的文件中。
如果您将协议(protocol) header 导入到 .m
文件中并幸运地编译它,您应该开始在 NSString 上获得自动完成功能。
编辑
从我的回答和其他地方的评论可以清楚地看出,jazou2012 受到了误解。
自动完成与模块是否正确无关。出于多种原因,自动完成可能无法找到标识符,即使该标识符已被正确定义。例如,即使导入了 Foundation.h
,我也能够在协议(protocol)中使用 NSString 复制 Jazou 的问题。
但是,一旦我将协议(protocol) header 导入 .m
文件,自动完成功能就开始识别 NSString
。我的猜测是,自动完成仅在编译器可见时才开始索引文件。
如果你想捕获编译错误,你需要编译代码。如果编译器说“没有错误或警告”,那么无论自动完成说什么,您的代码都没有问题。
关于objective-c - 为什么自动完成在 xcode 中新创建的协议(protocol)头文件中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740939/