簡體   English   中英

帶有NSAutoReleasePool的EXC_BAD_ACCESS

[英]EXC_BAD_ACCESS with NSAutoReleasePool

我正在分離一個新線程

[NSThread detachNewThreadSelector:@selector(loadAvatar) toTarget:self withObject:nil];

我正在獲取EXC_BAD_ACCESS

STObject* st = [cellitem get:@"stobject"];

在我下面的方法

-(void)loadAvatar
{   

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    STObject* st = [cellitem get:@"stobject"];
    //do stuff...
    [pool release];
}

我曾嘗試保留聖人,但沒有運氣。 當我運行此代碼而不分離新線程時,我沒有任何問題。 我不太確定自己缺少什么。

UPDATE單元格是NSObject的子類,其中包含一些屬性,例如字典和字符串。

get方法基本上從字典返回一個字符串

保留st對您沒有多大幫助,因為EXC_BAD_ACCESS錯誤源自分配發生之前。 問題出在訪問cellItem或您的get方法中。 無論哪種方式,您都可能嘗試訪問已釋放的對象。 嘗試運行啟用僵屍檢測的儀器。

不確定該解決方案為何有效,但是我告訴我的線程休眠0.1秒,這似乎解決了所有問題。

    [NSThread detachNewThreadSelector:@selector(loadAvatar) toTarget:self withObject:nil];
    [NSThread sleepForTimeInterval:0.1];

有誰知道為什么會這樣嗎? 我想睡覺會阻止某些物體過早釋放? 可能是修正的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM