显示从后台线程和没有委托UIAlertView创buildEXC_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 

这段代码在后台线程中执行(负责parsing),并且错误只发生在其他时间。 任何想法在这里是什么问题?

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

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

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

如果您的应用程序具有graphics用户界面,则build议您接收与用户相关的事件,并从应用程序的主线程启动界面更新。 这种方法有助于避免与处理用户事件和绘制窗口内容相关的同步问题。 一些框架,比如Cocoa,通常需要这种行为,但即使对于那些没有的行为,在主线程上保持这种行为也有简化pipe理用户界面的逻辑的优点。

线程和您的用户界面