代码改变世界

Tried to obtain the web lock from a thread解决方法之一

2013-06-14 15:23  科悦  阅读(301)  评论(0编辑  收藏  举报

项目中一个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时,强行回到主线程中执行。