2012-01-26 15 views
4

私は開発中のiOSアプリケーション用にいくつかのコードを用意しています。何らかの理由ですばやく簡単なタスクのように思えるものは、毎回iPhone 4Sを十分に2番目以上にする必要があります。なぜUIAlertViewのインスタンス化に時間がかかりますか?

コンテキストはこれです...私は2ボタンのActionSheetポップアップを持っています。ユーザーがいずれかのボタンをタップすると、アプリケーションは約1秒間ストールしているようです。 (最初のボタンが同じように動作しますが)、ログは次のようになります

-(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 

ていることに注意してください、私はそれを試して初めてコードスニペットの実行が終了する前に2秒以上経過しますが、2回目以降のコードでは30ミリ秒かかります。

コードに何か問題がありますか?または単に進捗状況ビューで遅延を補う必要がありますか?

ありがとうございます!

編集:これは、Xcodeからアプリを実行しているときにデバイスでのみ発生します...おそらくデバッガと関係がありますか?

+1

を延期することができること、そしてちょうどいくつかの 'NSTimeInterval'のアイバーズを使用して、後でそれらをログに記録します。何かのように: 'startSecond = [NSDate timeIntervalSinceReferenceDate];'。 NSLogはパフォーマンスの問題を引き起こすことが知られています。 – NJones

答えて

0

私が遭遇したいかなる状況においても、Xcodeはアラートビューを遅らせることはありません。

あなたのコードは非常にプレーンなバニラに見えるので、あなたが投稿したスニペットの外側に何か起こっていると思われます。

私はあなたがタイマーを参照していることを知りました...これは、タイマーのコールバックのような、何かの現れです。タイムプロファイラまたはシステムトレースの計測器を使用して、何がブロックされているかを確かめてください。

+0

私はこれを調べます、ありがとう! –

+0

あなたのアプリでタイマーを使用していますか? –

3

私はあなたがデバッガがあなたを減速を懸念している場合は、ここでアラートがメインスレッド上にない場合、彼らは

+0

ドキュメントで明示的に許可されている場合を除き、セカンダリスレッドではいかなるUIKitも使用しないでください。しかし、私はそれがここでは問題ではないと思っています - アクションシートデリゲートメソッドはフレームワークによって呼び出され、メインスレッド上でのみコールを行います。 –

関連する問題