私はそれを得たと思ったが、私はメモリ管理の理解に問題がある。私はplistのからの私のデータをインポートした後、私は完全に参照カウントの私の理解でめちゃめちゃ(とそれを修正しようとして一日を過ごす)リリースする内容
私のplistの構造は、基本的にはちょうどである得た:
<dict>
<key>Menue1</key>
<array>
<dict>
<key>pic1</key>
<string>a</string>
...and so on...
</dict>
<dict>
<key>pic1</key>
<string>a</string>
...and so on...
</dict>
<dict>
<key>pic1</key>
<string>a</string>
...and so on...
</dict>
</array>
<key>Menue2</key>
<array>
<dict>
<key>pic1</key>
<string>a</string>
...and so on...
</dict>
<dict>
<key>pic</key>
<string></string>
<key>text</key>
<string></string>
</dict>
</array>
</dict>
とでコード
参照カウント(私はそうだと思いますが)の考えを理解していますが、基本的な数学は失敗するようです。 viewDidLoad
後
dict = 1
exercises = 1
exerciseViewContent = 1
、私はそれがとてもFIRSTで
dict = 1
exercises = 1
exerciseViewContent = 2
tempdict = 1
ようになり仮定の上に、私はすべてこのようなものを行いますため、私は以下のようにして参照を想定@interface
へ
をviewDidLoad
とtempdict
の中に一度公開し、の3つのすべて(dict, exercise, exerciseViewContent
)を解放する必要があると思いました0を0にするには、0をすべて取得してください。私はかなりの時間を過ごした後にexerciseViewContent
をdealloc
にリリースしなければならないことが分かりましたが、exercise
またはdict
(私はそのプロパティをインターフェイスに保持して設定しています。 tempdict
をリリースする必要はありませんが、私はallocを使っているので、私が理解する以上に多くのことを理解しています。ちょっと手を動かすだけで今動作しています(今まで)。
だから私は知りたいのです:すべての
- まず:私の記憶の管理は、このように正しいのですか?
dict
がリリースされました。私はそれをリリースしません(または私のAppクラッシュ)?- これはplistからdictsと配列にアクセスする適切な方法ですか?
- 私は
initWithContentsOfFile
にはオートリリースが含まれていると仮定しますが、どうすればよいでしょうか? autoreleaseを含むメソッドのリストがありますか(またはリストがないのですが、これまでにないものはありますか)? - "すべてのallocまたはinitがリリースを必要とする"ため、実際にはうまくいっています。明らかにここには当てはまりません。
さらに、「パス」を解放する必要がありますか?
もは次のとおりです。
[timer invalidate];
timer = nil;
リリースと同じ、私はそれを保持するプロパティですセットが、私は明らかにまた、タイマー(NSTimer
)を解放する必要はありませんと?それとも、NSInteger
のように、公開する必要はありませんNSTimer
ですからクラスリファレンスでは、どのタイプをリリースしなければならないのか、デフォルトではないのか分かりますか?
そして:私はそれがインターフェイスに保持するプロパティです設定した場合はXcodeのテンプレートから
(:)
(void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; }
が、私はまだ "myOutlet" をリリースする必要がありますか?
dict、excercises、およびexerciseViewContentのセッターをどのように実装/合成するのですか? – cem
"...'my.dict = tempDict;'と 'dict = tempDict;'は**同じ**ではないことに注意してください(これはインターフェイスで保持されているプロパティを設定して合成します)。 – albertamg