素人目だが、どうも第3章メモリ管理は間違ってるように見える。
p69 中程のコード
[p release]
これが
Possession *p = [Possession alloc] init];
だったらどうするのか?
他の例に習えばreleaseするはず。
「自分の所有しないオブジェクトを解放しない」というのが、何か例外を発生させるような問題なのか、それとも作法の問題なのか、今ひとつ明確に答えていない。
ここでは結局autoreleaseを使うということで決着しているが、そうしないと例外が起きるのかどうかは書いていない。
それにautoreleaseが送信されるとNSAutoReleasePoolのインスタンスに追加される場合、保持カウントは1になっている記述があるが、P71では「配列が保持して保持カウントが1になります」とあり、カウントされていないような記述になっている。無茶苦茶だ。
この本はここまでいい調子で来ただけに、この章の出だしの例えが酷過ぎる辺りからして、著者はイマイチ自信がないんだと思う。勝手な推測だが。
実は3rd edition(英語版)をkindle本で買ったのだが、この部分はすっかりARC対応になっていて、すべて書き変わっているので、今更かもしれない。
まあメモリ管理は重要だけど、根本的なことなので、飛ばしても最後に分かれば問題ないと思う。最後に分かれば、だよ。
0 件のコメント:
コメントを投稿