1

NSUrlConnection の return ブロックで UIAlertView を使用すると、まれにクラッシュが発生します。そのような非同期スレッドで UIAlertView を使用することは許可されていませんか?

ほとんどの場合、問題なく動作しているようです。

4

2 に答える 2

3

すべての UI 関連のコードは、メイン スレッドで動作する必要があります。

別のスレッドで alertView を表示したときに、同様のクラッシュが発生しました。

dispatch_asyncまたはを使用して alertView を表示する必要がありますperformSelectorOnMainThread

        dispatch_async(dispatch_get_main_queue(), ^{

          UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" 
                    message:@"Message" 
                delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

          [alert show];
       });

また

          UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" 
                    message:@"Message" 
                delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
         [alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntillDone:NO];
于 2012-11-19T04:21:43.210 に答える
1

メインスレッドでのみ UIAlertView を使用できると思います。performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>return ブロックで使用します。

于 2012-11-19T01:18:37.407 に答える