下載了xcode5,寫代碼時對一個變量比如NSString *str = [[NSString alloc] init]類似這樣的寫法,都不用手動釋放內存了麼?([str release])。這個特性是從xcode哪個版本開始的? 還有,那這樣是不是意味著xcode5就是像java那樣的自動管理內存了呢?
认证高级PHP讲师
2.0 2.0加了GC
你其實是在這找篇文章吧? 《Mac OS X 背後的故事(八)三好學生Chris Lattner的LLVM編譯工具鏈》
從 iOS 5.Xcode 4.2.
目前為止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但是只實現自訂的釋放。
也是最近剛好在研究這個,如果錯誤請也請各位大大指正
2.0
2.0加了GC
你其實是在這找篇文章吧? 《Mac OS X 背後的故事(八)三好學生Chris Lattner的LLVM編譯工具鏈》
從 iOS 5.Xcode 4.2.
目前為止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但是只實現自訂的釋放。
也是最近剛好在研究這個,如果錯誤請也請各位大大指正