Wystarczy dodać atrybut do deklaracji:
@interface Blah
- (void)method __attribute__((deprecated));
@end
przydzieliła Ci obejmuje są poprawne tłumaczenia, to powinno działać dobrze. Być może dodałeś atrybut do definicji, a nie do deklaracji ? W przeciwnym razie pomocna byłaby demonstracja (przykład kodu).
Aktualizacja
Chociaż powyższe podejście działa dla typowych komunikatów wydaje się, dzyń pogubi z IBAction
s.
Przy użyciu klanu atrybuty są wstawiane domyślnie (dla tego, co poprzednio było typedef
).
Gdy atrybut jest określona w deklaracji tylko wyjście preprocesor jest następująca:
// preprocessed declaration
- (void)__attribute__((ibaction))setSomething:(id)sender __attribute__((noreturn));
// preprocessed implementation
- (void)__attribute__((ibaction))setSomething:(id)sender
...
Więc wydaje się, że kompilator jest tylko zdezorientowany tym ukrytym dekoracji, a trzeba też dodać atrybut do implementacja/definicja, aby wyłączyć ostrzeżenie, gdy metoda jest IBAction
.
To nie działa! –
Działa na moim komputerze;) Zamieść swój kod! – justin
- (IBAction) showTag __attribute __ ((przestarzałe)); Rozumiem: Atrybuty dotyczące implementacji metody i jej deklaracji muszą być zgodne. –