0

私は自分のnewArrayオブジェクトに入っている範囲外索引の問題を理解しようとしています。私はこの方法にoldArrayに渡し、その後、次のコマンドを使用します。オートレリースされている可能性のあるアレイでアレイを初期化できますか?

newArray = [[NSMutableArray alloc] initWithArray:oldArray]; 

oldArrayがリリースされている場合は、私はこの行でエラーになるだろうか、私がアクセスnewArrayにしようとしたとき、私は限界例外のうちになるだろう?

答えて

2

上記のコードは、oldArrayのコピーをnewArrayにします。 oldArrayを何らかの方法で(それを解放することを含めて)変更することはnewArrayに影響を及ぼさず、いずれの場合も境界例外を発生させません。

この時点でoldArraynilであることが予想されるため、newArrayは空の配列です。代わりに、oldArrayには、あなたが思うほど多くの要素が含まれていないことがあります。境界例外は、配列の最後を過ぎて読んでいることを意味します。メモリ管理とは何の関係もありません。

+0

わかりました。ありがとうございました。私は位置ゼロで境界線から外れていたので、oldArrayが空である必要があります。ありがとう、私はさらに調査します –