如何弃用整个协议?

Hyp*_*ole 30 gcc protocols objective-c deprecated

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

DEPRECATED_ATTRIBUTE 似乎不起作用.

例如,以下两个语句不编译.

  • @protocol DEPRECATED_ATTRIBUTE MyProtocol
  • @protocol MyProtocol DEPRECATED_ATTRIBUTE

Chr*_*ick 56

我自己没有尝试过,但我认为以下语法应该可行.

__attribute__ ((deprecated))
@protocol MyProtocol
@end
Run Code Online (Sandbox Code Playgroud)

这与弃用整个接口以及单个方法的语法相似.

__attribute__ ((deprecated))
@interface MyClass
@end

@interface MyClass2
- (void) method __attribute__((deprecated));
@end
Run Code Online (Sandbox Code Playgroud)

  • 我意识到这是旧的,但是作为旁注,就像最近的Clang版本一样,你可以使用:```__deprecated```作为``__attribute __((不赞成))```的简写. (11认同)
  • `__deprecated`与clang版本无关.它由/usr/include/sys/cdefs.h中的系统头提供.您还可以使用`__deprecated_msg("使用它的开发人员的注释.")`和编译器一起打印消息以及弃用通知. (4认同)