Вы можете использовать атрибут deprecated
:
@interface MyObject: NSObject
- (void)oldMethod
__attribute__((deprecated("Don't use this", "newMethod")))
;
- (void)newMethod;
@end
Если вы хотите отказаться от конкретной версии ОС, вы можете использовать атрибут clang availability
.Обратите внимание, что вы можете отказаться от использования только в зависимости от версии ОС, но не от версии вашей собственной библиотеки.
Пример:
#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, если хотите.В этом заголовочном файле есть комментарии, объясняющие его использование.