どのNSStringはreleaseするのか?
結構初歩的だけど悩みます。
NSStringの活用の仕方としては
①NSString = [[NSString alloc] init];
②NSString = [NSString stringWith〜];
③NSString = @””;
の3パターンがあると思います。
①の時はもちろんreleaseします。
②の時はしません
③が問題です。
そもそも③の使い方があっているかどうか分からないところもありますが、問題なく使えてしまうので、サクっと使っちゃったりしてました。
使ってきた中では「まあallocしてないししなくていいんじゃないの?」と思って使ってました。実際問題はなく動きます。
しかし、メンバ変数として活用しているNSStringに、宣言しているコントローラで直接文字列を入れるようにすると、落ちてしまう様子。
だけど、他のコントローラから「例) detailViewController.titlestring = @”タイトル”」みたいに使うときは特に問題はない。 何この分けわかんない感じ…。
まとめると
他のコントローラから「detailViewController.titlestring = @”タイトル”」
→dealloc、ViewDidUnloadに書くだけでOK
宣言したコントローラで「titleString = @”タイトル”」
→なんども表示すると落ちる。きちんとinitしましょう
となるみたいです。
あと直接代入するとメモリの確保が行われず、他のオブジェクトが入り込んでくる場合もあるみたい。
とにかく代入は不安定なんですね。
ただ、プロパティは別、のような感じみたい。ややこしいけど。
ともかく、リスク回避するならプロパティ以外は直接文字列入れるな!ってことですね〜。