【问题标题】:How can I deprecate an entire protocol?如何弃用整个协议?
【发布时间】:2011-09-13 21:49:10
【问题描述】:

是否可以弃用整个协议?我正在使用 iOS SDK 5.0 Beta 7 附带的 GCC 编译器。

DEPRECATED_ATTRIBUTE 似乎不起作用。

例如,以下两条语句无法编译。

  • @protocol DEPRECATED_ATTRIBUTE MyProtocol
  • @protocol MyProtocol DEPRECATED_ATTRIBUTE

【问题讨论】:

    标签: objective-c gcc protocols deprecated


    【解决方案1】:

    我自己没有尝试过,但我认为下面的语法应该可以工作。

    __attribute__ ((deprecated))
    @protocol MyProtocol
    @end
    

    这类似于弃用整个接口以及单个方法的语法。

    __attribute__ ((deprecated))
    @interface MyClass
    @end
    
    @interface MyClass2
    - (void) method __attribute__((deprecated));
    @end
    

    【讨论】:

    • 嗯。完全没想到。
    • 我意识到这是旧的,但作为旁注,从最近的 Clang 版本开始,您可以使用:__deprecated 作为__attribute__ ((deprecated)) 的简写。
    • __deprecated 与 clang 版本无关。它由 /usr/include/sys/cdefs.h 中的系统头文件提供。您也可以使用__deprecated_msg("A note to the developers using it."),编译器会打印消息以及弃用通知。
    猜你喜欢
    • 2019-03-17
    • 2013-09-18
    • 1970-01-01
    • 2020-06-27
    • 2011-12-21
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    相关资源
    最近更新 更多