87 votes

Comment déprécier une méthode en XCode

Nous livrons notre bibliothèque à nos clients et j'aimerais marquer certaines méthodes comme "obsolètes" parce que nous les avons modifiées (comme Apple le fait dans le kit de développement logiciel iPhone).

J'ai vu la macro __OSX_AVAILABLE_BUT_DEPRECATED pré-processeur, mappée à __AVAILABILITY_INTERNAL , qui est mappée à __attribute__((deprecated)) ...

Eh bien, je suis un peu confus avec ce genre de choses!

Quelqu'un sait quelque chose à ce sujet?

155voto

KennyTM Points 232647

__attribute__((deprecated)) est le moyen utilisé par gcc pour marquer une fonction / méthode comme obsolète. Quand l'un d'entre eux est marqué comme "obsolète", un avertissement sera émis à chaque appel.

La syntaxe pour les fonctions normales serait

 __attribute__((deprecated))
void f(...) {
  ...
}
 

et celui des méthodes Objective-C serait

 @interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end
 

Vous pouvez également marquer la classe entière comme obsolète avec

 __attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end
 

75voto

skywinder Points 1035

Vous pouvez également utiliser une définition plus lisible DEPRECATED_ATTRIBUTE

Il a défini en usr/include/AvailabilityMacros.h :

#define DEPRECATED_ATTRIBUTE __attribute__((deprecated))

et celui des méthodes Objective-C serait

 @interface MyClass : NSObject { ... }
-(void)f:(id)x DEPRECATED_ATTRIBUTE;
...
@end
 

Vous pouvez également marquer la classe entière comme obsolète avec

 DEPRECATED_ATTRIBUTE
@interface DeprecatedClass : NSObject { ... }
...
@end
 

Si vous souhaitez spécifier un message obsolète, utilisez:

DEPRECATED_MSG_ATTRIBUTE("Use newMethod: instead.")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X