2

私のコードのブランチでは、以前はこれを使用していました

NSMutableArray *array1 = [[NSMutableArray alloc] init];

上記の配列は、UITableVewに入力するために使用されます。

理由は、私は次のように切り替えました。

NSMutableArray *array1 = [NSMutableArray arrayWithCapacity:0]

コードに他の変更を加えなかったため、UITableViewでリストを下にスクロールしようとすると、アプリがクラッシュします。

アレイが正しく初期化されていないようです。なぜこれが起こるのか誰かが説明できますか?基になるメモリスペースがどのように割り当てられるかについて、2つの方法は同一ではありませんか?

4

1 に答える 1

2

コードの 2 行目は NSArray を保持していないため、クラッシュが発生しています。[array1 retain]に電話した後に電話する必要がありますarrayWithCapacity:

この投稿には、かなりの有用な情報があります。Cocoa / Objective C で参照カウントを理解する

一般に、"new" または "init" で始まらないクラス メソッド (例: arrayWithCapacity) を呼び出す場合、通常、返されるオブジェクトは自動解放されると想定できます。

于 2009-10-02T19:54:05.283 に答える