你可以用
deprecated
属性:
@interface MyObject: NSObject
- (void)oldMethod
__attribute__((deprecated("Don't use this", "newMethod")))
;
- (void)newMethod;
@end
如果您想从特定OS版本开始弃用,可以使用
clang's
availability
attribute
. 请注意,您只能根据操作系统版本而不是您自己库的版本来弃用。
#import <Foundation/Foundation.h>
@interface MyObject: NSObject
- (void)oldMethod
__attribute__((availability(ios,deprecated=12.0,replacement="newMethod")))
;
- (void)newMethod;
@end
@implementation MyObject
- (void)oldMethod { }
- (void)newMethod { }
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
MyObject *o = [[MyObject alloc] init];
[o oldMethod]; // Xcode offers a fix-it to use newMethod instead.
}
return 0;
}
API_DEPRECATED_WITH_REPLACEMENT
中定义的宏
<os/availability.h>
而不是直接使用clang属性。头文件中有注释解释了它的用法。