![](/img/trans.png)
[英]Does application didFinishLaunching in AppDelegate always get called after opening an app post-update?
[英]didFinishLaunching is never called
我創建了一個新的基於窗口的項目,無法弄清為什么它什么也沒做。 最終,我在didFinishLaunching之后放置了一個NSLog,並且在運行它時從未記錄它。 這是我編寫的所有代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"didFinishLaunching");
// Get the device object and turn proximity monitoring on
UIDevice *d = [UIDevice currentDevice];
[d setProximityMonitoringEnabled:YES];
// Get the NSNotificationCenter object
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
// Sign up to receive notifications when the proximity state changes
[nc addObserver:self selector:@selector(proximityChanged:) name:UIDeviceProximityStateDidChangeNotification object:d];
NSLog(@"Observing...");
[self.window makeKeyAndVisible];
return YES;
}
- (void)proximityChanged:(NSNotification *)note {
// Print out the changes of proximity state
NSLog(@"Proximity Changed: %d", [[note object] proximityState]);
}
這就是我編寫的全部內容,當我在模擬器或設備上運行它時,什么也沒有記錄。 有什么想法嗎?
好吧,您在談論應用程序委托。 顯而易見的原因- 您的對象未設置為應用程序委托 。
查看Apple文檔,有很多方法可以實現它:
在Interface Builder中檢查您的nib文件,然后查看是否已安裝App Delegate。
參考文檔 核心應用程序設計
應用程序委托是您在應用程序啟動時提供的自定義對象,通常是將其嵌入到應用程序的主nib文件中。 該對象的主要工作是初始化應用程序並在屏幕上顯示其窗口。 當發生特定的應用程序級事件時,例如當應用程序需要中斷(由於傳入消息)或移至后台(由於用戶輕按“主頁”按鈕)時,UIApplication對象還會通知此對象。
第四個參數標識應用程序委托的類。 應用程序委托負責管理系統和您的自定義代碼之間的高級交互。 指定nil告訴UIKit應用程序委托對象位於應用程序的主nib文件中(使用Xcode模板構建的應用程序就是這種情況)。
嘗試刪除“構建/清理所有目標”,刪除“ Build /”目錄,然后從模擬器和/或設備中刪除該應用程序。 然后再次運行。
作為另一項檢查,請嘗試在applicationDidBecomeActive:
記錄一些內容。 無論是在初始啟動時還是從后台恢復時,都會調用此方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.