0

最近、いくつかのコードをARCに変換しました。ほとんどのコードは自分で作成していませんでしたが、現在、これを理解するために何時間も努力しています。

このコードは、ARCを使用していないときは正常に実行されますが、分析時にリークが発生する可能性があります。

実行すると、3行目に例外が発生します: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];
    }
}

なぜこれが問題を引き起こすのかについて誰かが何か考えを持っていますか?

4

1 に答える 1

2

なぜこれが問題を引き起こすのかについて誰かが何か考えを持っていますか?

さて、あなたはオブジェクトに失敗して-initMapPOIます。

また、おそらくそれらをNSArrays(またはNSMutableArrays)に格納する必要があります。

于 2012-04-26T11:08:04.153 に答える