2013-03-15 160 views
0

我有一個dispatch_async呼叫在呼叫我稱之爲可變塊和傳遞對象作爲參數

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

定義在「內部」塊I做一些東西與我的緩衝塊(常量字符*)並創建一個對象 - 對象,並把它傳遞給我的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; 

爲什麼得到的dealloc被調用我的表對象?

+1

dealloc也被稱爲callbackObj? – ehope 2013-03-15 21:01:56

+0

不,我有斷點,它從來沒有被擊中,它的應用程序 – Sebastian 2013-03-15 21:06:32

+0

應該永遠dealloced uitableview是recieveDataModelsFinished:實際執行?也許你對callbackObj的引用是無 – ehope 2013-03-15 21:11:31

回答

0

我在蘋果論壇上聽到這個: 「如果你只是在調試器中單步執行代碼的時候纔會得到這個消息,那麼這是調試器的一個已知問題,當你逐步完成代碼時,他們的描述如果一個對象被交易,但仍然在範圍內,調試器仍然會向交易對象發送消息,從而導致控制檯輸出關於消息的釋放實例。「 所以我希望它的調試器有問題。