在我的搜索中,我找到了关于此的 clang 文档;
Clang 语言扩展
我的 Xcode 版本是 4.6.2,我尝试了没有 ARC 的 LLVM-gcc,以确保 gcc 编译器仍然可以使用扩展。
我的 C/C++/Objective-C 选项编译器是;LLVM GCC 4.2 和 Apple LLVM 编译器。
这两个属性都在 .h 头文件中。LLVM GCC 和 APPLE LLVM 都采用这两种风格
-(void)oldMethod __attribute((deprecated()));
//or
-(void)oldMethod2 DEPRECATED_ATTRIBUTE;
LLVM GCC 抱怨以下方法格式,因为 Apple LLVM 工作正常(这实际上回答了你的问题。你的编译器使用的是 LLVM GCC 或更旧的东西)
-(void)oldMethod __attribute((deprecated("Don't use Old Method")));
长话短说,在搞乱这些构建设置和更改之前,请务必进行备份。
检查正确的 Xcode 是否正在运行(4.6.2 是最新的),我最终得到了不同版本的混乱,不得不进行清理。
检查“构建选项”下的项目设置中哪些编译器版本可用。(我在上面指出了那个答案)
对于较旧的项目,您可能需要检查使用 ARC 进行重构并转换为现代 Objective-c。请务必保留备份,在较大的项目中可能会很麻烦。(编辑->重构->现代Objective-C)视频;WWDC 2011 使用自动引用计数进行重构 WWDC 2012 现代 Objective-C 视频 https://developer.apple.com/videos/wwdc/2012/
注意:现代 Objective-C 重构将更改为 Apple-LLVM 编译器。连同其他变化。
如果这个答案成为您问题的核心,请通过投票来帮助我!蒂亚!