Xcode 4 vous permet de développer des applications pour iPhone ou iPad avec iOS 4.3 cible inférieure à celle d'aujourd'hui. Cependant, le même code qui est fourni avec le modèle "faille" de la présomption, en supposant que notre demande sera cibler iOS 4 ou plus. Dans le délégué de l'application, par exemple, Xcode insère les lignes de code suivantes:
1 2 3 4 5 6 7 | BOOL ) application : ( UIApplication * ) application didFinishLaunchingWithOptions : ( NSDictionary * ) launchOptions - (Bool) Application: (*) UiApplication didFinishLaunchingWithOptions d'application: ( NSDictionary *) launchOptions { / / Point de personnalisation après le lancement de l'application sont prioritaires. self.window.rootViewController = self.viewController; ; [Self.fenetre makeKeyAndVisible]; ; retourner OUI; } |
La propriété rootViewController de l'objet window a été introduit avec iOS 4. Cela signifie que si nous faisons de notre application avec iOS 3.2, il va se planter "allègrement"!
Au premier instinct pourraient être tentés de vérifier la version de l'iOS, qui est, de contrôler l'exécution (temps d'exécution) de la version du système d'exploitation et utiliser l'appel "vieux" [self.window addSubview:viewController.view]; . Une meilleure façon, à mon avis, est de profiter de la caractéristique dynamique de l'Objective-C, en particulier la possibilité de vérifier la présence ou l'absence d'une méthode (dans notre cas, la possibilité de vérifier l'existence de la méthode setRootViewController .
En utilisant cette méthode, il a l'avantage d'éviter des contrôles sur la version «float», qui peut changer au fil du temps. Le code que je propose est la suivante:
1 2 3 4 5 6 7 8 9 10 11 12 | BOOL ) application : ( UIApplication * ) application didFinishLaunchingWithOptions : ( NSDictionary * ) launchOptions - (Bool) Application: (*) UiApplication didFinishLaunchingWithOptions d'application: ( NSDictionary *) launchOptions { / / Point de personnalisation après le lancement de l'application sont prioritaires. self.window respondsToSelector : @selector ( setRootViewController : ) ] ) { if ([self.fenetre respondsToSelector: @ selector (setRootViewController :)]) { self.window.rootViewController = self.viewController; { Else {} self.viewController.view ] ; [Self.fenetre addSubview: self.viewController.view]; } ; [Self.fenetre makeKeyAndVisible]; ; retourner OUI; } |











Il n'y a aucun commentaire pour cet article
Laisser un commentaire