UIAlertView中创建EXC_BAD_ACCESS

问题描述:

这里是我的代码:UIAlertView中创建EXC_BAD_ACCESS

#ifdef DEBUG 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"ERROR" message:@"JSON Parsing Error" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
#endif 

此代码是在后台线程(负责解析)执行,并且错误仅发生每隔时间。任何想法在这里有什么问题?

不要从后台线程中弄乱UI。创建一个方法并在主线程上调用该方法:

[someObject performSelectorOnMainThread:@selector(showDebug:) 
          withObject:@"JSON Parsing Error" 
          waitUntilDone:YES]; 
+0

完美的答案,因为我在的iOS 6.0的问题,其解决了 –

您不应该在单独的线程中执行UI代码。

如果您的应用程序有一个图形用户界面,建议您收到用户有关的活动,并开始从应用程序的主线程界面更新 。此方法有助于避免与处理用户事件和绘图窗口内容相关的同步问题。一些框架,比如Cocoa,通常需要这种行为,但即使对于那些不这样做的行为,在主线程上保持这种行为也具有简化用于管理用户界面的逻辑 的优势。

Threads and Your User Interface