gpt4 book ai didi

objective-c - __attribute__ ((deprecated)) 不适用于 objective-c 协议(protocol)方法?

转载 作者:技术小花猫 更新时间:2023-10-29 10:35:38 29 4
gpt4 key购买 nike

我需要弃用 Objective-C 协议(protocol)中的一个方法。在普通的类/实例方法上,我在声明后添加 __attribute__ ((deprecated));

它似乎不适用于协议(protocol)方法。如果我将它们标记为已弃用并在某个地方使用它们,项目编译正常,没有预期的弃用警告。

这是 Apple LLVM 3.1 的缺陷,还是我做错了什么?

最佳答案

虽然这里的答案提供了一些很好的信息,但它们已经过时了。从 Xcode 5.0 和 LLVM 5.0 开始,似乎可以识别 Objective-C 协议(protocol)方法的弃用警告。在实现该方法时,Xcode 5 会对其进行标记:

Warning: Implementing deprecated method

以下是我用来为已弃用协议(protocol)方法的实现生成弃用警告的步骤:

  1. 使用 __deprecated 将协议(protocol)方法标记为已弃用。来自新的 SDK 7.0 文档:

    __deprecated causes the compiler to produce a warning when encountering code using the deprecated functionality. __deprecated_msg() does the same, and compilers that support it will print a message along with the deprecation warning. This may require turning on such warning with the -Wdeprecated flag. __deprecated_enum_msg() should be used on enums, and compilers that support it will print the deprecation warning.

    #define __deprecated    __attribute__((deprecated))

    要弃用您的方法,请执行以下操作:

    - (void)aDeprecatedProtocolMethod __deprecated;

    仅此一项应该足以让 Xcode 显示弃用警告。但是,您应该执行接下来的几个步骤(知道 Xcode 有时可能非常挑剔)以确保显示警告。

  2. 添加带有弃用警告标记的文档注释。请参阅下面的代码示例以了解操作方法:

    /** Describe the method here - what does it do, how does it work, etc. Very brief.
    @deprecated This delegate method is deprecated starting in version 2.0, please use otherMethodNameHere:withAnExtraParameter: instead. */
    - (void)aDeprecatedProtocolMethod __deprecated;
  3. 清理项目(++K)然后构建项目(>+B) - 只是因为 Xcode 有时会很时髦。

我不是 100% 确定此功能是何时何地引入的(可能是 SDK 7.0 和 10.9,或 Xcode 5.0/5.0.1,或 LLVM 5.0)- 但它仍然有效。

关于objective-c - __attribute__ ((deprecated)) 不适用于 objective-c 协议(protocol)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432452/

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