gpt4 book ai didi

objective-c - 属性的参数数量错误

转载 作者:太空狗 更新时间:2023-10-30 03:54:45 24 4
gpt4 key购买 nike

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

__attribute__((不可用("消息文本")));

此代码已被建议here , herehere ,可能还有几个我现在想不起来的地方。

我无法编译这段代码。我得到的编译器错误是“为‘不可用’属性指定的参数数量错误”。 deprecated 属性的相同错误。如果我删除它编译的字符串,但我想知道如何 字符串编译它。由于它已被几个人独立建议并且甚至被投票,所以它一定是工作代码。但我似乎无法编译它。

我做错了什么?如何编译?

最佳答案

在我的搜索中,我找到了关于此的 clang 文档; Clang Language Extensions

我的 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")));

长话短说,请务必在处理这些build设置和更改之前保留一个备份。

  1. 检查正确的 Xcode 是否正在运行(4.6.2 是最新的),我最终遇到了困惑的不同版本,不得不进行清理。

  2. 在“构建选项”下的项目设置中检查哪些编译器版本可用。 (我在上面指出了那个答案)

  3. 对于较旧的项目,您可能需要检查使用 ARC 进行重构并转换为现代 objective-c。请务必保留备份,在较大的项目中可能会很麻烦。 (编辑->重构->现代 Objective-C)视频;WWDC 2011 使用自动引用计数进行重构WWDC 2012 现代 Objective-C 视频 https://developer.apple.com/videos/wwdc/2012/

    注意:现代 Objective-C 重构将更改为 Apple-LLVM 编译器。以及其他更改。

如果这个答案成为您问题的核心,请通过投票帮助我解决问题! TIA!

关于objective-c - 属性的参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16913227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com