私は長い間、自分自身をガベージ コレクションの俗物だと考えてきました。秘密裏に C++ を愛しているにもかかわらず、選択肢が与えられたときにガベージ コレクションを使用せずに言語を積極的に使用する開発者を冷笑していることに気づきました。
そしてObjective-Cに出会いました。わお!その参照カウントのシステムは見事にシンプルに見えます – 私はエレガントとさえ言えます. OSX 向けに開発する場合、開発者にはおしゃれな GC を使用するオプションが与えられます。iOS 向けに開発する場合、開発者は参照カウントに行き詰まります。
私の質問は:
iOS に移植される可能性のある OSX アプリケーションを開発している場合、Objective-C の参照カウント システムは、アプリケーションの最初のバージョンで無視することを保証するのに十分な (開発およびバグ修正に関して) 時間がかかりますか?
悪魔のように複雑な循環データ構造を構築するほど賢くないと仮定して、参照カウント*に頼ると、どのような問題に遭遇する可能性がありますか? のような機能を使えばautorelease
、すべてがとても簡単に思えますが、もしこれが本当なら、Apple がガベージ コレクタの作成に労力を費やさなかったことを私は知っています。何に気をつければいいですか?
retain
* s とsをいじっていても、ガベージ コレクターを使用できることは承知してrelease
います (それらは無視されます)。ただし、GC 以外のアプリケーションがRAIIretain
を使用することが多いことを考えると、世代別 GC がandへの呼び出しを「置き換える」場合、それがどのように機能するかわかりませんrelease
。リソースのリリースが遅れる可能性はありませんか?