首頁  >  問答  >  主體

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

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

PHP中文网PHP中文网2739 天前587

全部回覆(4)我來回復

  • ringa_lee

    ringa_lee2017-04-21 11:20:14

    2.0
    2.0加了GC

    回覆
    0
  • 伊谢尔伦

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

    你其實是在這找篇文章吧? 《Mac OS X 背後的故事(八)三好學生Chris Lattner的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:每次引用[object retain]讓引用計數+1,用完[object release]防止意外釋放和野指針。

    GC:這個只有Cocoa支援,NSGarbageCollector可以實現類似Java的自動垃圾回收,缺點是影響性能,因此Cocoa Touch沒有提供這個功能.

    ARC:這個是新功能(其實也不算新),Xcode的新預設編譯器Apple LLVM,取代了先前的LLVM-GCC ,使用了Clang作為前端,Clang帶有一個靜態分析器,在程式碼編譯前會進行分析,在需要加入retain和release的地方由分析器代勞進行補全。 ARC可以代勞大量的手動引用計數操作,同時也避免了許多失誤。使用ARC後禁止手動使用retain和release方法,可以重載dealloc但是只實現自訂的釋放。

    也是最近剛好在研究這個,如果錯誤請也請各位大大指正

    回覆
    0
  • 取消回覆