2016-07-16 32 views
8

, dün gece xcode 8.2 beta İndirilen benim kod çoğu dönüştürülmüş ama şimdi uygulama temsilcinize altı işlevlerine ilişkin sarı uyarı sembolleri ile şaşırıp:Tüm 6 uygulama delege işlevi hızlı 3 "neredeyse isteğe bağlı gereksinim" ile eşleşiyor - bu nedir? Nasıl düzeltilir?

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:. 
} 
} 

Ben her fonksiyonu "düzeltmek" am güçlü ya

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

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

veya daha önce bu üç seçenek görmedim dikkate

Add '@nonobjc' to silence this warning 

, birisi sana aklın explaini ng ve bunları çözmek veya göz ardı etmek için herhangi bir seçenek var mı?

cevap

10

Bu, "yeniden adlandırmanın" bir parçası ve bir yöntemin ilk parametresinin dışsallaştırılmasına ilişkin kurallardaki Swift3 değişikliğinin bir parçasıdır.

Yani, ilk seçeneği yapın: her durumda ilk parametrenin adı olarak _ application: (application: yerine sade ve basit) yapmak için _ girin. Aksi takdirde, application dışsallaştırılacak ve Objective-C bu yöntemleri applicationWithApplication... olarak adlandırılacak olarak göreceksiniz.

Diğerlerinden hiçbirini yapmayın. bu yöntemleri Objective-C'den (private veya @nonobjc) gizlemek istemezsiniz; Nesne-C'yi numaralı telefona, özellikle de uygulama temsilcisi protokolü yöntemleri olarak görmek için'a bakın. İşte

+0

Devam eden açıklama için teşekkür ederiz! – jonpeter

+0

, bu fonksiyondan "_ uygulama:" – jonpeter

+0

olarak ayrılmanın güvenli olduğuna şüphe yok. – jonpeter

-3

Ben sabit nasıl:

ESKİ KODU:

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

YENİ KODU:

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

Bu yanlış. LaunchDownFinishLaunching 'seçeneği, iOS 2'den beri iOS'ta bulundu ve Apple Docs'ta kullanmaktan vazgeçtiniz. –

-1

Ben Bir uzantısında UITextViewDelegate vardı bir örnek ama sınıfın yanlış bir uyum sağladığını yanlış yazdı.