我正在分离新帖子
[NSThread detachNewThreadSelector:@selector(loadAvatar) toTarget:self withObject:nil];
我在
上获得了EXC_BAD_ACCESSSTObject* st = [cellitem get:@"stobject"];
在我的以下方法中
-(void)loadAvatar
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
STObject* st = [cellitem get:@"stobject"];
//do stuff...
[pool release];
}
我试过保留st但没有运气。当我运行此代码而不分离新线程时,我没有任何问题。我不确定我错过了什么。
UPDATE cellitem是NSObject的子类,包含一些属性,如字典和字符串。
get方法基本上从字典中返回一个字符串
答案 0 :(得分:3)
保留st对你没有多大好处,因为EXC_BAD_ACCESS错误源于作业发生之前。问题在于访问cellItem或在get方法中。无论哪种方式,您都可能尝试访问已发布的对象。尝试使用zombie detection enabled运行工具。
答案 1 :(得分:1)
不完全确定为什么这个解决方案有效,但我告诉我的线程睡眠0.1秒,似乎解决了所有问题。
[NSThread detachNewThreadSelector:@selector(loadAvatar) toTarget:self withObject:nil];
[NSThread sleepForTimeInterval:0.1];
有谁知道为什么会这样?我猜测睡眠会阻止某些物体过早释放?可能是一个hacky修复。