__attribute__((deprecated))
jest sposobem gcc (także obsługiwanym w clang ) oznaczania funkcji / metody jako przestarzałej. Gdy ktoś zostanie oznaczony jako „przestarzały”, za każdym razem, gdy ktoś go wywoła, zostanie wyświetlone ostrzeżenie.
Składnia normalnych funkcji byłaby następująca
__attribute__((deprecated))
void f(...) {
...
}
__attribute__((deprecated("g has been deprecated please use g2 instead")))
void g(...) {
...
}
a metody Cel-C
@interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end
Możesz również oznaczyć całą klasę jako przestarzałą za pomocą
__attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end
Firma Apple dostarcza również <AvailabilityMacros.h>
nagłówek, który zawiera makra DEPRECATED_ATTRIBUTE i DEPRECATED_MSG_ATTRIBUTE (msg), które rozwijają się do powyższych atrybutów lub nic, jeśli kompilator nie obsługuje atrybutów. Zwróć uwagę, że ten nagłówek nie istnieje poza systemem OS X / iOS.
Uwaga dodatkowa, jeśli używasz Swift, używasz @available
atrybutu do wycofania elementu, np
@available(*, deprecated=2.0, message="no longer needed")
func f() {
...
}