项目中一个UIViewController内使用异步线程,异步线程未执行完时pop退出此画面,程序crash。控制台打出错误如下:
Tried to obtain the web lock from a thread other than the main thread...
经调查,发现是由于UIViewController的release方法没有在主线程中调用造成的crash,修改方法如下:
- (oneway void) release {
if (![NSThread isMainThread]) {
[self performSelectorOnMainThread:@selector(release) withObject:nil waitUntilDone:NO];
} else {
[super release];
}
}
添加以上代码到UIViewController中,当不在主线程中执行release时,强行回到主线程中执行。