我在该调用中有一个dispatch_async
调用我称之为变量
dispatch_async(kBgQueue, ^{
proceedDataBlock(callbackObj, buffer, mbo);
free(buffer);
});
在“内部”块中,我使用缓冲区(const char *)执行一些操作并创建一个obj-c对象并将其传递给我的callbackobj,如
Table *dataList = [[Table alloc] init ...];
[callbackObj performSelectorOnMainThread:@selector(recieveDataModelsFinished:) withObject:[dataList autorelease] waitUntilDone:YES];
我的回调obj
-(void)recieveDataModelsFinished:(TableDataList *)dataList
{
self.tableDataList = dataList;
}
定义为
@property (nonatomic, retain) TableDataList *tableDataList;
为什么在我的回调完成后会为我的Table对象调用dealloc?
答案 0 :(得分:0)
我在Apple论坛中听到过: “如果只是在调试器中单步执行代码时才得到该消息,那么这是调试器的一个已知问题。调试器会在您单步调试代码以获取其描述时发送消息。如果对象被解除分配但仍在范围内调试器仍然会向dealloced对象发送消息,从而导致控制台输出关于对已释放的实例进行消息传递。“ 所以我希望调试器出现问题。