Alternatives à la liaison faible dans l'iPhone SDK?
-
27-09-2019 - |
Question
Je cherche à rendre mon application compatible avec les anciennes versions de l'iPhone OS. Je l'ai vu faible liaison mentionné comme une option. Puis-je utiliser le code de détection de la version OS pour éviter les blocs de code que le système d'exploitation ne peut pas gérer? (Say iAD?)
if(OS >= 4.0){
//set up iADs using "NDA code"...
}
Si oui, ce qui se passe à la place de if(OS >= 4.0)
?
La solution
Vous devriez être faible contre les nouveaux liaison cadres. A côté de cela, vous devriez vérifier la disponibilité de nouvelles API en utilisant des méthodes comme NSClassFromString
, respondsToSelector
, instancesRespondToSelector
etc.
Par exemple. liaison faible contre MessageUI.framework (un ancien exemple, mais toujours d'actualité)
Vérifiez d'abord si la classe existe MFMailComposerController
:
Class mailComposerClass = NSClassFromString(@"MFMailComposerController");
if (mailComposerClass != nil)
{
// class exists, you can use it
}
else
{
// class doesn't exist, work around for older OS
}
Si vous avez besoin d'utiliser de nouvelles constantes, types ou fonctions, vous pouvez faire quelque chose comme:
if (&UIApplicationWillEnterBackgroundNotification != nil)
{
// go ahead and use it
}
Si vous avez besoin de savoir si vous pouvez utiliser des méthodes ANEW sur une classe déjà existante, vous pouvez faire:
if ([existingInstance respondsToSelector:@selector(someSelector)])
{
// method exists
}
Et ainsi de suite. Espérons que cela aide.