ホームページ  >  に質問  >  本文

apple - objective-c从哪个版本开始就不用手动管理内存了?

下载了xcode5,写代码时对一个变量比如NSString *str = [[NSString alloc] init]类似这样的写法,都不用手动释放内存了么?([str release])。这个特性是从xcode哪个版本开始的?
还有,那这样是不是意味着xcode5就是像java那样的自动管理内存了呢?

PHP中文网PHP中文网2739日前581

全員に返信(4)返信します

  • ringa_lee

    ringa_lee2017-04-21 11:20:14

    2.0
    2.0 では GC が追加されました

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-21 11:20:14

    本当にここで記事をお探しですか? 「3 人の優秀な学生 Chris Lattner による Mac OS X (8) LLVM コンパイル ツール チェーンの背後にある物語」

    返事
    0
  • 阿神

    阿神2017-04-21 11:20:14

    iOS 5.Xcode 4.2以降

    返事
    0
  • 阿神

    阿神2017-04-21 11:20:14

    これまでのところ、Objective-C 開発者はメモリを管理するためにいくつかの方法を使用できますが、最も一般的な方法は [object dealloc] です。

    MRC: [オブジェクト保持] が参照されるたびに、参照カウントが +1 され、[オブジェクト解放] が偶発的な解放とワイルド ポインターを防ぐために使用されます。

    GC: これは Cocoa でのみサポートされています。NSGarbageCollector は Java と同様の自動ガベージ コレクションを実装できます。欠点は、パフォーマンスに影響するため、Cocoa Touch はこの機能を提供していないことです。

    ARC: これは新しい機能です (実際にはまったく新しいものではありません)。Xcode の新しいデフォルト コンパイラーである Apple LLVM は、以前の LLVM-GCC を置き換え、コードがコンパイルされる前に Clang をフロントエンドとして使用します。これは分析され、保持と解放を追加する必要がある場合は、アナライザーがユーザーに代わってそれらを完了します。 ARC は、手動による多数の参照カウント操作を引き継ぎ、多くの間違いを回避できます。 ARC を使用した後は、retain メソッドと release メソッドを手動で使用することは禁止されています。dealloc をオーバーロードすることはできますが、実装するのはカスタマイズされたリリースのみです。

    最近調べたので間違っていたらご指摘ください

    返事
    0
  • キャンセル返事