Sólo tiene que añadir el atributo en la declaración:
@interface Blah
- (void)method __attribute__((deprecated));
@end
incluye siempre y cuando su son correctos para la traducción, esto debería funcionar bien. Tal vez haya agregado el atributo a la definición , no la declaración ? De lo contrario, una demostración (muestra de código) ayudaría.
actualización
Aunque el enfoque anterior funciona para los mensajes típicos, parece sonido metálico se confunde con IBAction
s.
Con clang, los atributos ibaction
están implícitamente insertados (por lo que anteriormente era un typedef
).
Cuando se especifica el atributo en la declaración única, la salida del preprocesador es la siguiente:
// preprocessed declaration
- (void)__attribute__((ibaction))setSomething:(id)sender __attribute__((noreturn));
// preprocessed implementation
- (void)__attribute__((ibaction))setSomething:(id)sender
...
Por lo tanto, parece que el compilador está confundido por esta decoración oculto, y también debe agregar el atributo de la implementación/definición para suprimir la advertencia cuando el método es IBAction
.
¡Esto no funciona! –
Funciona en mi máquina;) Publique su código! – justin
- (IBAction) showTag __attribute __ ((obsoleto)); Entiendo esto: los atributos en la implementación del método y su declaración deben coincidir. –