第4回 詳解Objective-C 2.0 読書会

  • CHAPTER06「ガーベジコレクション
  • 質問:10.5以降はリファレンスカウンタは使わない?
    • 10.5の内部はGCを使っているが、外のライブラリはまだGDに対応していないことが多いからリファレンスカウンタを使わざるを得ない
    • GCはテキスト入力のハンドリングがまだあやしい
    • IMの中の処理がメモリーリークっぽくバラバラ残る
    • 今までMacで開発してきた人はリファレンスカウンタに慣れているので変える必要性を感じていない
    • RubyCocoaOS XGCにはまだ対応していない
  • deallocしかしていないときはfinalizeなしのGCでOK
  • OS Xが出た頃はみんなGCがないのがよいと言っていた。自分は早くGC出して欲しかった」(新居さん)
  • Core Dataはリテインが複雑でGCでもパフォーマンスが出にくい
  • 「+(id)defaultCollector」でプラグインの中からガーベジコレクタがいるかどうかを調べる
  • ランタイムのAPIはCの関数はあまり使わない
  • 【超重要】GUIに関する注意
    • XIB/NIBファイルでルート集合から参照できないオブジェクトを作ってしまうとGCに回収されてしまう
    • 動的にGUI部品をつなごうとしているときにはまる。つなぐ前にGCされてしまう可能性がある
    • ルートから参照されているのは「File's Owner」だけなのでここにIBOutletを追加してつなぐ
    • 「NIBファイルをロードするときにやってほしい」