2011-09-13 7 views
25

¿Es posible desaprobar un protocolo completo? Estoy usando el compilador de GCC que se incluye con iOS SDK 5.0 Beta 7.¿Cómo puedo desaprobar un protocolo completo?

DEPRECATED_ATTRIBUTE parece que no funciona.

Por ejemplo, las dos declaraciones siguientes no se compilan.

  • @protocol DEPRECATED_ATTRIBUTE MyProtocol
  • @protocol MyProtocol DEPRECATED_ATTRIBUTE

Respuesta

49

No he probado esto por mí mismo, pero creo que la sintaxis siguiente debería funcionar.

__attribute__ ((deprecated)) 
@protocol MyProtocol 
@end 

Esto es paralelo a la sintaxis para desaprobar una interfaz completa, así como un único método.

__attribute__ ((deprecated)) 
@interface MyClass 
@end 

@interface MyClass2 
- (void) method __attribute__((deprecated)); 
@end 
+0

Huh. Totalmente no pensé en eso. – Hyperbole

+11

Me doy cuenta de que esto es antiguo, pero solo como nota al margen, a partir de las versiones recientes de Clang puedes usar: '' '__deprecated''' como abreviación de' '' __attribute__ ((obsoleto)) '' '. – mszaro

+3

'__deprecated' no tiene nada que ver con las versiones de clang. Lo proporcionan los encabezados del sistema en /usr/include/sys/cdefs.h. También puede usar '__deprecated_msg (" Una nota para los desarrolladores que lo usan. ")' Y el compilador imprime el mensaje junto con el aviso de desaprobación. –

Cuestiones relacionadas