我在這裏爲我正在開發的iOS應用程序編寫了一些代碼,出於某種原因,每次看起來像一個快速而簡單的任務需要我的iPhone 4S完成第二個或更多工作。爲什麼實例化UIAlertView需要這麼久?
上下文是這樣的...我有一個2按鈕的ActionSheet彈出窗口,如果用戶點擊其中一個按鈕,應用程序似乎停頓了大約一秒鐘。下面的代碼:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
UIAlertView* newTimerAlertView = [[[UIAlertView alloc] initWithTitle:@"Create New Timer"
message:@"Enter a name for your new indicator"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Create", nil] autorelease];
newTimerAlertView.tag = kNewTimer;
newTimerAlertView.alertViewStyle = UIAlertViewStylePlainTextInput;
[newTimerAlertView show];
}
else if (buttonIndex == 1)
{
NSLog(@"ActionSheet button 2 tapped");
UIAlertView* newTallyAlertView = [[[UIAlertView alloc] initWithTitle:@"Create New Tally"
message:@"Enter a name for your new indicator"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Create", nil] autorelease];
newTallyAlertView.tag = kNewTally;
newTallyAlertView.alertViewStyle = UIAlertViewStylePlainTextInput;
[newTallyAlertView show];
NSLog(@"end");
}
}
着眼於爲簡便起見,第二個按鈕(雖然第一個按鈕的工作方式),日誌是這樣的:
2012-01-25 20:35:46.330 ...[177:707] ActionSheet button 2 tapped
2012-01-25 20:35:47.194 ...[177:707] end
2012-01-25 20:35:56.154 ...[177:707] ActionSheet button 2 tapped
2012-01-25 20:35:56.180 ...[177:707] end
注意,我第一次嘗試,在代碼片段執行完成之前超過一秒,但第二次(以及所有後續時間)代碼只需要30毫秒左右。
代碼有問題嗎?還是我需要用進度視圖來彌補延遲?
謝謝!
編輯:這隻發生在設備上時,從Xcode運行應用程序...也許這與調試器有關嗎?
如果你關心調試放慢你失望,那麼就使用一些'NSTimeInterval'實例變量,後來記錄它們。例如:'startSecond = [NSDate timeIntervalSinceReferenceDate];'。已知NSLog會導致性能問題。 – NJones