2013-04-01 19 views
3

如何計算加載視圖/窗口所用的時間?這可以通過這樣做:計算完所有異步服務調用完成後加載窗口所用的時間

NSDate *startTime=[NSDate date]; 

//some code to load another window from winController 

NSDate *endTime=[NSDate date]; 
NSTimeInterval diff = [endTime timeIntervalSinceDate:startTime]; 
NSLog(@"Time to load is %f seconds.\n\n\n",diff); 

但它不會計算所花費的總和確切時間。要加載一個窗口,然後在init和awakeFromNib中,它會異步調用服務,加載自定義視圖,填充表格視圖等,以及傳播到幾十個類/控制器和幾十種方法。

如果我使用上述(顯示的程序),當微調控制器繼續旋轉並且服務呼叫正在進行時,達到endTime

我可以通過觀察時鐘來檢查,加載窗口花費的時間超過一分鐘,並準備好對其執行任何操作,但diff計算爲0.5秒。

現在的問題是我不能更改項目的整個代碼,但是我可以在它們之間插入一些東西。

如何做到這一點,建議將不勝感激。

+0

您是否需要準確的時間,直到進度指示消失或者您想了解長時間加載的時間? –

+0

我需要從按鈕點擊到窗口準備就緒的實際區別。甚至在progressIndicator停止窗口不接受任何事件之後。 –

+0

@AnoopVaidya定義「準備好」。另外,爲什麼不在alloc-initting窗口之前獲取日期,然後在加載完成後再次獲取當前日期,然後您就可以獲得差異。 – 2013-04-01 10:37:14

回答

0

我知道這是遲到,不知道如果你仍然在尋找答案或否(但它可能會尋找解決類似問題的其他人)。但在這種情況下,你必須跟蹤你的代碼,即你需要知道最後調用異步調用的哪個回調。追蹤很容易。我通常做的是非常普通和簡單的,在這些回調中放置NSLog(%@「1」)... NSLog(%@「any_number」)。並檢查最後打印哪個。這樣,您可以將您的endtimer代碼放入回調中,並知道加載窗口需要多長時間。希望這可以幫助某人。

相關問題