使用ARC的Obj-C代码中的EXC_BAD_ACCESS代码= 2错误

时间:2012-04-26 09:10:24

标签: iphone objective-c ipad ios5 automatic-ref-counting

我最近将一些代码转换为ARC,大部分代码都是我自己写的,但是现在我已经花了好几个小时来解决这个问题。

此代码在不在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];
    }
}

有人对这可能导致麻烦的原因有任何疑问吗?

1 个答案:

答案 0 :(得分:2)

  

有人对这可能导致麻烦的原因有任何疑问吗?

你没有-init MapPOI个对象。

此外,您应该将它们存储在NSArrays(或NSMutableArrays)中。