2011-09-13 6 views
25

E 'possibile deprecare un intero protocollo? Sto usando il compilatore GCC che viene fornito con iOS SDK 5.0 Beta 7.Come posso deprecare un intero protocollo?

DEPRECATED_ATTRIBUTE non sembra funzionare.

Ad esempio, le seguenti due istruzioni non vengono compilate.

  • @protocol DEPRECATED_ATTRIBUTE MyProtocol
  • @protocol MyProtocol DEPRECATED_ATTRIBUTE

risposta

49

Non ho provato io stesso, ma penso che la seguente sintassi dovrebbe funzionare.

__attribute__ ((deprecated)) 
@protocol MyProtocol 
@end 

Parallelamente alla sintassi per deprecare un'intera interfaccia e un singolo metodo.

__attribute__ ((deprecated)) 
@interface MyClass 
@end 

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

Huh. Totalmente non ci ho pensato. – Hyperbole

+11

Mi rendo conto che questo è vecchio, ma proprio come un sidenote, a partire dalle recenti versioni di Clang puoi semplicemente usare: '' '__deprecated''' come abbreviazione di' '' __attribute__ ((deprecato)) '' '. – mszaro

+3

'__deprecated' non ha nulla a che fare con le versioni clang. È fornito dalle intestazioni di sistema in /usr/include/sys/cdefs.h. Puoi anche usare '__deprecated_msg (" Una nota per gli sviluppatori che la usano. ")' E il compilatore stampa il messaggio insieme all'avviso di deprecazione. –