1

当我在 NSUrlConnection 的返回块中使用 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)#>在您的返回块中使用。

于 2012-11-19T01:18:37.407 回答