1

I tried to show UIAlertView in another thread(Main Thread). But it always goes to thread 1 exc_bad_access (code=1 address=0x0) error.

I Used following code.

if ([urlData writeToFile:attachmentPath atomically:YES]) {
    UIAlertView *sucessAlrt = [[UIAlertView alloc] initWithTitle:gaAppName
                           message:@"File has been Downloaded successfully"
                          delegate:self
                 cancelButtonTitle:nil
                 otherButtonTitles:@"OK", nil];

   [sucessAlrt performSelectorOnMainThread:@selector(show) 
                                withObject:nil waitUntilDone:NO]; 
}  

why it goes to bad access error ??

4

2 回答 2

0

你实现了这些UIAlertViewDelegate方法吗?更重要的是,您从中调用的这个对象是否在警报期间保持在范围内?如果它被释放,您将收到异常。

顺便说一句,除非您需要应用程序在用户点击@"OK"按钮时执行某些操作,否则您将nil通过delegate. 如果您需要delegate,请确保该对象被保留。

于 2013-10-11T14:32:07.303 回答
-1

我认为当您单击“确定”时,它的访问会出错,因为 uialertview 不是在主线程中创建的,但是您试图通过在对话框出现时单击“确定”从主线程访问 uialertview。我起初误解了这个问题,对不起 :D 所以把整个代码放在 gcd 调用中应该可以解决这个问题。在主线程中实例化警报视图,并在主线程中运行您的选择器。

于 2013-10-11T14:29:52.110 回答