首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性参数的错误数目

属性参数的错误数目
EN

Stack Overflow用户
提问于 2013-06-04 08:37:22
回答 1查看 1.8K关注 0票数 5

在目标C中,有以下代码将方法标记为过时:

__attribute__((unavailable("message text")));

这段代码被建议为这里这里这里,可能是在一些我现在无法回忆起的地方。

我不能编译这段代码。我得到的编译器错误是“为‘不可用’属性指定的参数数错误”。对于不推荐的属性也有相同的错误。如果删除字符串,它会编译,但我想知道如何用字符串编译它。由于它是由几个人独立提出的,甚至被修改过,所以它必须是工作代码。但我似乎不能让它编译。

我做错了什么?如何使这个编译?

EN

回答 1

Stack Overflow用户

发布于 2013-06-10 07:22:39

在我的搜索中,我找到了关于这个的clang文档;Clang语言扩展

我的Xcode版本是4.6.2,我尝试了不带ARC的LLVM,以确保gcc编译器仍然与扩展一起工作。

我的编译器为C/C++/Objective选项;LLVM GCC 4.2和Apple编译器。

这两个属性都在.h头文件中。LLVM GCC和APPLE都采用了这两种风格

代码语言:javascript
复制
-(void)oldMethod __attribute((deprecated()));
//or
-(void)oldMethod2 DEPRECATED_ATTRIBUTE;

LLVM GCC抱怨了下面的方法格式,因为Apple正常工作(这实际上回答了您的问题。您的编译器正在使用LLVM GCC或其他更旧的)

代码语言:javascript
复制
-(void)oldMethod __attribute((deprecated("Don't use Old Method")));

长话短说,在处理这些构建设置和更改之前,一定要保持备份。

  1. 如果检查正确的Xcode是否正在运行(4.6.2是最新的),我最终会遇到不同版本的杂乱,必须进行清理。
  2. 检查在“生成选项”下的项目设置中有哪些编译器版本可用。(我已指出上述答案)
  3. 对于较旧的项目,您可能需要检查是否使用ARC进行重构,并将其转换为现代的objective。只需确保保持备份,在较大的项目上,这可能是一个麻烦。(编辑->重构->现代目标-C)视频;WWDC 2011重构自动参考计数WWDC 2012现代目标-C视频https://developer.apple.com/videos/wwdc/2012/ 注:现代目标-C重构将改为Apple编译器。还有其他的变化。

如果这个答案是你问题的核心,那就去投票吧!蒂娅!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16913227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档