阻止和传递对象作为参数

时间:2013-03-15 20:59:06

标签: objective-c

我在该调用中有一个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?

1 个答案:

答案 0 :(得分:0)

我在Apple论坛中听到过: “如果只是在调试器中单步执行代码时才得到该消息,那么这是调试器的一个已知问题。调试器会在您单步调试代码以获取其描述时发送消息。如果对象被解除分配但仍在范围内调试器仍然会向dealloced对象发送消息,从而导致控制台输出关于对已释放的实例进行消息传递。“ 所以我希望调试器出现问题。