0

dispatch_async在那个调用中有一个调用我调用一个变量中定义的块

dispatch_async(kBgQueue, ^{
            proceedDataBlock(callbackObj, buffer, mbo);
            free(buffer);
        });

在“内部”块中,我使用缓冲区(const char *)做一些事情并创建一个 obj-c 对象并将其传递给我的回调obj,例如

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?

4

1 回答 1

0

我在 Apple 论坛上听到:“如果您仅在调试器中单步执行代码时收到该消息,那么这是调试器的一个已知问题。当您单步执行代码以获取它们的描述时,调试器消息对象。如果对象已解除分配但仍在范围内,调试器仍将向解除分配的对象发送消息,从而导致控制台输出有关向解除分配的实例发送消息的消息。” 所以我希望它是调试器的问题。

于 2013-03-18T07:18:39.673 回答