【问题标题】:EXC_BAD_ACCESS code=2 error in Obj-C code with ARC带有 ARC 的 Obj-C 代码中的 EXC_BAD_ACCESS 代码 = 2 错误
【发布时间】:2012-05-07 00:12:15
【问题描述】:

我最近将一些代码转换为 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];
    }
}

有人知道为什么这会引起麻烦吗?

【问题讨论】:

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


    【解决方案1】:

    有人知道为什么这会引起麻烦吗?

    好吧,你没有 -init MapPOI 对象。

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

    【讨论】:

    • 有时我觉得自己很愚蠢,或者是盲目的。谢谢!由于我最近刚刚进入该项目,因此可能会在稍后阶段重新编写代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2013-11-06
    • 2014-06-22
    • 1970-01-01
    相关资源
    最近更新 更多