__attribute__((deprecated))
- это способ gcc (также поддерживаемый в clang ) пометки функции / метода как устаревшего. Если один из них отмечен как «устаревший», каждый раз, когда кто-либо его вызывает, будет выдаваться предупреждение.
Синтаксис для обычных функций будет
__attribute__((deprecated))
void f(...) {
...
}
__attribute__((deprecated("g has been deprecated please use g2 instead")))
void g(...) {
...
}
а метод Objective-C будет
@interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end
Вы также можете пометить весь класс как устаревший с помощью
__attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end
Apple также предоставляет <AvailabilityMacros.h>
заголовок, который предоставляет макросы DEPRECATED_ATTRIBUTE и DEPRECATED_MSG_ATTRIBUTE (msg), которые расширяются до указанных выше атрибутов, или ничего, если компилятор не поддерживает атрибуты. Обратите внимание, что этот заголовок не существует вне OS X / iOS.
Боковое примечание: если вы используете Swift, вы используете @available
атрибут, чтобы не рекомендовать элемент, например
@available(*, deprecated=2.0, message="no longer needed")
func f() {
...
}