私はカテゴリと呼ばれる(非原子、保持)として宣言されたNSMutableArrayプロパティを持っています。 deallocでは、私はその変数のメモリを解放します。もともと、viewDidLoadでは、その配列を割り当てて、そのデータにダミーデータを設定する別のメソッドを呼び出しました。基本的にオートレリースされた変数を保持していますが、どこから解放しますか?
[categories addObject:someObject1];
[categories addObject:someObject2];
....
これは機能していました。
次に、モデルと話してオートレリーズされた配列を返した方法で、同僚から実際のデータを取得しました。私はメソッドを使用した後、EXC_BAD_ACCESSを取得していました。
categories = [datamanager GetCategories];
これは、私がdatamanagerのGetCategoriesメソッドから返された自動リリース配列を保持していないためです。
もしそうなら、私はviewDidLoadでalloc/initを削除する必要があります。これはメモリリークの権利でしょうか?
ありがとうございます。ちょうど私が正しくメモリ管理を理解していることを確認しようとしています。
私は、 'self.'構文を使うのがベストプラクティスと言います。すでにObj-C 2.0のプロパティを宣言していますが、それを使うこともできます。 – darvids0n
darvids0nに同意すると、特に設定者を無効にしているときにself.property =を直接設定するほうが望ましいですし、なぜ動作していないのか分かりません! –
私は 'self.'構文が好ましいと思います。しかし、Obj-cのメモリ管理を学ぶ人にとっては、両方のオプションのしくみを理解することが重要です。 – SundayMonday