2012-04-26 36 views
0

我最近將一些代碼轉換爲ARC,大部分代碼我沒有自己寫,但現在我已經花了好幾個小時來弄清楚了。EXC_BAD_ACCESS code = 2使用ARC的Obj-C代碼錯誤

這個代碼運行良好,當不在ARC上時,雖然它在分析時會產生一些潛在的泄漏。

當我運行時,我在第三行得到一個異常:poi [i] = [MapPOI alloc], 但我的猜測是其他段也可能會導致一些麻煩。

poi = (__strong MapPOI **)malloc(sizeof(MapPOI *) * dbsize); 
for (int i = 0; i < dbsize; i++) { 
    poi[i] = [MapPOI alloc]; 
} 
poilayer = (__strong CALayer **)malloc(sizeof(CALayer *) * (dbsize + (extraDB == nil ? 0 : [extraDB count]))); 

if (extraDB != nil) { 
    extraPOI = (__strong MapPOI **)malloc(sizeof(MapPOI *) * [extraDB count]); 
    for (int i = 0; i < [extraDB count]; i++) { 
     extraPOI[i] = [MapPOI alloc]; 
    } 
} 

任何人有任何想法,爲什麼這可能會導致麻煩?

回答

2

任何人有任何想法,爲什麼這可能會導致麻煩?

那麼你沒有-initMapPOI對象。

另外,你應該將它們存儲在NSArrays(或NSMutableArrays)中。

+0

有時候我覺得很蠢,或者是盲目的。謝謝!自從我剛剛進入該項目以來,Wil可能會在稍後的階段重新編寫代碼。 – 2012-04-26 12:09:45

相關問題