Comment signaler une méthode comme obsolète dans Objective-C 2.0?

Je fais partie d’une équipe qui développe une application iPad assez grande et il en résulte de nombreuses classes différentes. Le problème est que certaines méthodes sont maintenant obsolètes et je ne veux pas simplement les supprimer car je sais que certaines parties du système utilisent les méthodes … mais il existe de meilleures variantes (plus récentes) à utiliser au lieu de cela (certains des anciens appellent les nouveaux, mais l’interface de la classe devient de plus en plus compliquée).

Y a-t-il un moyen de marquer certaines méthodes comme étant dépréciées (comme @deprecated en Java et [Obsolete] dans .NET).

Je vois que Apple utilise Availability.h et a des tags tels que

 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0); 

… est-ce la seule façon de le faire (+ est-ce que l’App Store est sûr de le faire?) ou existe-t-il des alternatives pour signaler un avertissement dans Xcode?

Syntaxe de déprécation

La syntaxe est fournie pour marquer les méthodes comme étant obsolètes:

 @interface SomeClass -method __atsortingbute__((deprecated)); @end 

ou:

 #include  @interface SomeClass -method DEPRECATED_ATTRIBUTE; // or some other deployment-target-specific macro @end 

IMHO, il est plus facile d’écrire __deprecated:

 - (void)myDeprecatedMethod __deprecated; - (int)methodNameDeprecated:(int)param __deprecated; 

Fonctionne aussi sur les cours

 __deprecated @interface MyDeprecatedClass // ... some properties and methods ... @end 

Si vous souhaitez donner un message supplémentaire avec l’indicateur de dépréciation, vous pouvez utiliser les indicateurs suivants.

 @property (strong, nonatomic) NSSsortingng *catName __deprecated_msg("use name instead."); // -- Or -- @property (strong, nonatomic) NSSsortingng *catName DEPRECATED_MSG_ATTRIBUTE("use name instead."); // -- Or -- @property (strong, nonatomic) NSSsortingng *catName __atsortingbute__((deprecated("use name instead."))); 

En utilisant les indicateurs mentionnés ci-dessus, vous pouvez déterminer pourquoi vous êtes déconseillé ou quelle est la méthode que le développeur doit utiliser à l’avenir.

Utilisez l’atsortingbut deprecated :

 - (int)bar: (int)x __atsortingbute__((deprecated)); 

Pour marquer une méthode comme obsolète, utilisez __atsortingbute __ ((obsolète (“Votre message va ici”)))

Un exemple pratique de Mantle

 @interface NSValueTransformer (UnavailableMTLPredefinedTransformerAdditions) + (NSValueTransformer *)mtl_externalRepresentationTransformerWithModelClass:(Class)modelClass __atsortingbute__((deprecated("Replaced by +mtl_JSONDictionaryTransformerWithModelClass:"))); + (NSValueTransformer *)mtl_externalRepresentationArrayTransformerWithModelClass:(Class)modelClass __atsortingbute__((deprecated("Replaced by +mtl_JSONArrayTransformerWithModelClass:"))); @end