weak-linking
Jamais utilisé, alors j'ai quelques questions avant de me lancer.
je compile sous 10.7 avec Base SDK 10.7 et deployement target 10.5 et j'obtiens des "deprecated en pagaille". Donc je dois utilisé le "weak-linking". J'ai été lire la Doc et j'ai trouvé ça:
For example, suppose in Xcode you set the deployment target (minimum required version) to “Mac OS X 10.5†and the base SDK (maximum allowed version) to “Mac OS X 10.6â€. During compilation, the compiler would weakly link interfaces that were introduced in Mac OS X v10.6 while strongly linking interfaces defined in earlier versions of the OS. This would allow your application to run in Mac OS X v10.5 and take advantage of newer features when available.
Si je comprends bien ce qui est dit là , le linker va utiliser le SDK 10.5 pour "lier en dur" et 10.7 pour le weak-linking. Correcte?
gestion = [NSFileManager defaultManager] ;
if ([gestion instancesRespondToSelector:@selector(truc:param1:param2)])
{ // utilisation de truc }
else
{ // code alternatif avec des méthodes de 10.7 } ;
Réponses
Deprecated ne signifie pas que la méthode n'existe plus.
Regarde dans les options du compilo et décoche "Warn about deprecated fonctions"
Et du coup ton code n'est pas correct. Il faut faire dans l'autre sens :
Si la nouvelle méthode existe alors l'utiliser, sinon utiliser la méthode deprecated.
@mpergand
Les deprecated méthodes ne sont pas immédiatement supprimées. Mais elles finissent par l'être, c'est dit clairement dans la doc. Donc il est intéressant que je m'en préoccupe et que j'apprenne comment régler ce problème.
@jpimbert
donc je fais l'inverse avec machin existant dans le SDK 10.7 et qui remplace truc du SDK 10.5:
Il reste que le SDK 10.5 n'est peut être pas installer sous Xcode 4.3.2. Il faut que je vérifie.
Donc, question subsidiaire: ai-je le droit d'ajouter dans Xcode 4.3.2 le SDK 10.5 ou 10.4?