【问题标题】:NS_Deprecated equivalent for 3rd party frameworksNS_Deprecated 等效于 3rd 方框架
【发布时间】:2015-09-27 23:54:10
【问题描述】:

通过 CF_Deprecated 进入 clang 属性可用性的 NSDeprecated 仅处理 MACOSX 和 IOS 的弃用。

是否有任何调用或一系列宏可以为第三方复制此工具。

我正在开发 SDK 的 V2,我们希望弃用某些调用以及 EOL。

(请注意,此 SDK 仍在 Objective-C 中;因此仅 Swift 的解决方案无法解决我的问题)

在编译和代码生成时,弃用警告和错误会非常棒;但是,我担心这是我需要自己旋转的东西。

在我必须决定是否需要在这个副项目上消磨时间之前,有任何关于此的指针或参考吗?

【问题讨论】:

  • 好像只适用于Swift,SDK还在Objective C中
  • 我编辑了帖子以指出我确实需要一个 Obj-C 解决方案)
  • + (void) testStuff __deprecated_msg("deprecated, use XYZ instead"); 这样的东西会给你一个编译器错误,如果这是你想要的。
  • 这是一个很好的权宜之计。至少我可以给问题贴上标签。有什么帮助是能够根据版本标记已弃用。随意添加这个作为答案,如果没有更好的结果,我会将它连根拔起并选择它。

标签: ios objective-c macos swift deprecation-warning


【解决方案1】:

您可以在您的 SDK 项目中使用#define 宏来简化弃用消息。我们在Core Plot project 中做了类似的事情。

【讨论】:

    【解决方案2】:

    GNU 编译器提供了一个函数属性deprecated。 标记弃用函数的语法是:

    void Foo() __attribute__( (deprecated("message", "replacement")) );

    第一个是发出警告时显示的消息;第二个使编译器能够提供 Fix-It 以用新名称替换已弃用的名称。

    更多关于使用函数属性的信息可以在GCC Attribute Syntax documentationAttributes in Clang documentation找到

    【讨论】:

      【解决方案3】:

      Apple 的 NSObjCRuntime.h 中有一些方便的宏。

      NS_DEPRECATED_IOS(6.0,10.0)
      

      像魅力一样工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-02
        • 2019-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多