自動化された可能性のある配列で配列を初期化できますか?
-
27-10-2019 - |
質問
私は自分が入っている境界のないインデックスの問題を理解しようとしています newArray
物体。私は渡ります oldArray
メソッドに、次に使用します。
newArray = [[NSMutableArray alloc] initWithArray:oldArray];
もしも oldArray
リリースされました、この行でエラーが発生しますか、それともアクセスしようとすると範囲外の例外が得られますか newArray
?
解決
いいえ、上記のコードはのコピーを作成します oldArray
の中へ newArray
. 。変化 oldArray
いかなる方法でも(リリースを含む)には影響しません newArray
, 、そしていずれにせよ、確かにバウンドの例外を引き起こしません。
最も可能性の高い原因はそれです oldArray
は nil
この時点で、そうです newArray
あなたがそれがそうなるとは思わないとき、空の配列です。代わりに、 oldArray
あなたが思うほど多くの要素を持っていないかもしれません。バウンド例外とは、配列の終わりを過ぎて読んでいることを意味します。メモリ管理とは何の関係もありません。
所属していません StackOverflow