2016-07-16 25 views
8

die Xcode 8.2 Beta letzte Nacht heruntergeladen, die meisten meines Code umgewandelt, aber bin jetzt mit gelben Warnsymbolen in Bezug auf die sechs Funktionen des AppDelegate stecken:Alle 6 App-Delegiertenfunktionen in swift 3 "entsprechen fast der optionalen Anforderung" - was ist das? Wie repariert man?

var window: UIWindow? 


func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    return true 
} 

    func applicationWillResignActive(application: UIApplication) { 
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 
} 

    func applicationDidEnterBackground(application: UIApplication) { 
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 
} 

    func applicationWillEnterForeground(application: UIApplication) { 
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 
} 

func applicationDidBecomeActive(application: UIApplication) { 
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
} 

func applicationWillTerminate(application: UIApplication) { 
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 
} 
} 
mit

Ich bin in der Lage zu „reparieren“ jede Funktion entweder

Rename to application(_:didFinishLaunchingWithOptions:)' to  satisfy this requirement 

    Make 'application(application:didFinishLaunchingWithOptions:)'  private to slince this warning 

oder

Add '@nonobjc' to silence this warning 

bedenkt, dass ich habe nicht vor, diese drei Optionen zu sehen ist, würde jemand Geist explaini ng und irgendwelche Optionen, um sie zu lösen oder zu ignorieren?

Antwort

10

Dies ist alles Teil von "Renamification" und die Swift 3 Änderung in den Regeln für die Externalisierung der ersten Parameter einer Methode.

Also, die erste Option: in die _ eingeben, um _ application: (anstelle von application: schlicht und einfach) als der Name des ersten Parameters in jedem Fall. Andernfalls wird application externalisiert und Objective-C sieht diese Methoden als applicationWithApplication..., was nicht das ist, was Sie wollen.

Tun Sie keines der anderen. Sie wollen nicht verstecken diese Methoden von Objective-C (private oder @nonobjc); Sie wollen Objective-C zu siehe sie, und insbesondere, um sie als App-Delegate Protokollmethoden zu sehen.

+0

Vielen Dank für die weitere Erklärung! – jonpeter

+0

ist es sicher, die Funktion als "_ application:" – jonpeter

+0

zu verlassen. Zum Glück keine anderen Fehler zu diesem Zeitpunkt. – jonpeter

-3

Hier ist, wie ich festgelegt:

OLD CODE:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    return true 
} 

NEW CODE:

func applicationDidFinishLaunching(_ application: UIApplication) { 
    // Override point for customization after application launch. 
} 
+3

Das ist falsch. 'applicationDidFinishLaunching' ohne Startoptionen war in iOS seit iOS 2 und es wird davon abgeraten, es in den Apple Docs zu verwenden. –

-1

Ich hatte einen Fall, wo ich UITextViewDelegate in einer Verlängerung hatte aber schrieb die Klasse falsch und machte sie zu einer redundanten Konformität.