我最近将一些代码转换为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];
}
}
有人对这可能导致麻烦的原因有任何疑问吗?
答案 0 :(得分:2)
有人对这可能导致麻烦的原因有任何疑问吗?
你没有-init
MapPOI
个对象。
此外,您应该将它们存储在NSArrays(或NSMutableArrays)中。