2013-12-16 11 views
1

如果我試圖減少我的應用程序的加載時間(即啓動圖像在初始View Controller出現之前可見的時間),那麼我應該在哪裏集中精力?我發現了幾個問題(如this),這些問題涉及很長的啓動時間,但他們似乎專注於第一臺View Controller的性能。我在應用程序生命週期的最初階段查找更多信息,以及調用哪些方法,以便我可以清理以提高啓動圖像的持續時間。iOS啓動映像下會發生什麼?

我想象一下application:didFinishLaunchingWithOptions:AppDelegate可能會在那個時間窗口被調用,但是還有別的嗎?假設一個來自Xcode模板的基本應用程序設計,沒有不尋常的構建規則或類似的東西。除了didFinishLaunching和第一個視圖控制器的加載方法之外,還有其他地方我應該看什麼?

回答

4

你應該學會使用儀器來確定你的程序在做什麼。 「時間分析器」工具將是一個很好的開始。

在摘要中幾乎不可能回答這個問題。真正的答案是「這取決於你的應用程序的編寫方式。」

系統將調用您的應用程序代理init方法,以及類方法+初始化(如果有的話 - 你可能不)

如果您使用情節串連圖板,系統將打開你的應用程序的故事板,並找出哪個視圖控制器是根視圖控制器。它將加載該視圖控制器並調用它。所以調用該視圖控制器的所有方法都會觸發。

一旦完成,您的didFinishLaunching:withOptions方法將被調用。你應該確保這種方法不需要很長時間,比如從互聯網上下載內容。

如果您確實需要在啓動時下載內容,則應該異步執行此操作。

1

你是對的。還要確保你的第一個viewcontrollers預覽方法很輕(例如init,viewDidLoad,viewWillAppear)。

要驗證哪些方法真的會影響您可以在關鍵點放置NSThreads sleepForTimeInterval。只在調試/開發當然。