Après avoir installé Xcode 8 beta 6, je reçois un avertissement disant:
La méthode d'instance 'application (_: didFinishLaunchingWithOptions :)' correspond presque à l'exigence facultative 'application (_: didFinishLaunchingWithOptions :)' du protocole 'UIApplicationDelegate'
dans mon délégué d'application.
Il existe 2 correctifs suggérés pour désactiver l'avertissement:
Faire l'une ou l'autre fait taire l'avertissement. Mais pourquoi cela doit-il être fait?
Dans le SDK iOS 12 (fourni avec Xcode 10), UIApplicationLaunchOptionsKey
a maintenant été renommé au type imbriqué UIApplication.LaunchOptionsKey
, Vous aurez donc besoin de:
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// ...
}
Cet avertissement est dû au fait que le paramètre didFinishLaunchingWithOptions:
De la méthode déléguée application(_:didFinishLaunchingWithOptions:)
est maintenant ponté vers Swift en tant que [UIApplicationLaunchOptionsKey: Any]?
, Plutôt qu'un [NSObject : AnyObject]?
.
Par conséquent, vous devrez mettre à jour votre implémentation pour refléter ce changement:
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
) -> Bool {
// ...
}
Notez qu'aucun des correctifs suggérés par Xcode ne résoudra réellement le problème, ils ne cacheront que votre implémentation de application(_:didFinishLaunchingWithOptions:)
d'Objective-C - ce qui signifie qu'il ne sera jamais réellement appelé.
le premier paramètre passé dans la fonction n'a plus de nom externe. Ce n'est vraiment qu'un détail mineur puisque vous n'appelez pas cette méthode directement, et c'est une solution rapide pour rendre le compilateur heureux. Vous pouvez soit modifier manuellement ce premier nom de paramètre en _, soit laisser Xcode s'en occuper à votre place.
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
ou la nouvelle syntaxe
func application(_ application:UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool // or remove = nil and try
vous pouvez obtenir la dernière documentation de Apple et un exemple de lien dans ici