UIApplication類及其委托方法 application:didFinishLaunchingWithOptions:


  UIApplication繼承自UIResponder的主要作用是提供了iOS程序運行期間的控制和協作工作,每個iOS程序運行期間都會有一個UIApplication實例,一般由main函數的UIApplicationMain函數完成,而在代碼中可以調用[UIApplication sharedApplication]方法來得到這個實例(有且僅有一個),比如可以利用它判斷程序狀態:

    if([UIApplication sharedApplication].applicationState ==UIApplicationStateInactive){

            NSLog(@"程序在運行狀態");

       }

新建一個任意類型的iOS應用工程,在AppDelegate.h中會看到

    AppDelegate :UIResponder <UIApplicationDelegate>

即本類實現(采納)了一個名叫UIApplicationDelegate的接口,且表明AppDelegate這個類就是這個工程中UIApplication實例的代理類。

 看看main函數:

int main(int argc, char *argv[])

{

    @autoreleasepool {

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

    }

}

  這里傳入了代理類到UIApplicationMain函數中,UIApplicationMain函數在生成唯一一個UIApplication的時候就可以把代理類的實例指針告訴這個單例對象了。

  在UIApplicationDelegate中有很多方法,最重要無非就是

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

iOS程序啟動時總會調用此方法,其中第二個參數launchOptions為NSDictionary類型的對象,里面存儲有此程序啟動的原因。例如:若用戶直接啟動,lauchOptions內無數據; 若由其他應用程序通過openURL:啟動,則lauchOptions==UIApplicationLaunchOptionsURLKey對應的對象為啟動URL(NSURL),lauchOptions==UIApplicationLaunchOptionsSourceApplicationKey對應啟動的源應用程序的bundle ID (NSString)。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM