objective-c - 为什么自动完成在 xcode 中新创建的协议(protocol)头文件中不起作用?

标签 objective-c xcode autocomplete protocols

我只是创建了一个协议(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/

相关文章:

objective-c - UIImageView增加特定区域的亮度

ios - 向 UItableview 添加行并在 Viewcontroller 之间传递数据

objective-c - NSView设置图片为网页图片

iphone - 如何使 iOS 应用程序名称可本地化?

JavaScript 根据输入文本计算输入值

Vim 插件在多个打开的缓冲区中自动完成

objective-c - WKWebView加载带有特殊字符的网页

c++ - (cocos2d-x 3.2/xcode 6) 如何打开 iOS 的 cpp-tests,没有项目文件

ios - 在 UI 测试中填充 TextField 失败

javascript - 当用户在 Kendo 自动完成中按退格键时防止回发