Могу ли я добавить исправление для своих собственных устареваний в Objective-C? - PullRequest
0 голосов
/ 23 октября 2018

Пытаетесь найти, смогу ли я создать собственное предложение "исправить это" для своих собственных устареваний?Это вообще возможно?Если да, то любой ресурс будет высоко ценится!

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете использовать атрибут 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, если хотите.В этом заголовочном файле есть комментарии, объясняющие его использование.

...