2011-12-17 26 views
9

根據Apple's ARC Documentation,使用ARC時開發軟件的方式發生了相當多的變化。從Objective-C開始:到ARC還是不到ARC?

作爲Objective-C的一個完整的初學者,最好是在禁用ARC的情況下開始,並認爲它能讓我更好地理解幕後發生的事情。或者,ARC已經不贊成採用「舊辦法」的做法,以至於不值得花時間學習?

+0

感謝所有的迴應,他們都是非常有幫助! – 2011-12-17 18:57:30

回答

11

這基本上是一個意見問題,因此相當危險。

我的意見是合格的。值得學習基本的內存管理。資格不會陷入其中。通過一些非常簡單的項目瞭解ARC在爲您做些什麼。一旦你對如何處理內存管理有了基本的瞭解,也就是如何避免保留週期(就像jemmons暗示的那樣,它們仍然可能是ARC的問題)。 一旦你掌握了內存管理的基本知識。開始使用ARC。

同樣,Jason Coco指出ARC處理內存管理(簡單地說)是NSObject的子類。所以,如果你需要使用它們,你仍然可以自己處理所有的CF對象。

在WWDC2011會議323 - 介紹自動引用計數中,可以找到有關ARC爲您做什麼的極好解釋。

但還有一些其他考慮可能會導致您的決定。

你需要什麼設備定位?

如果您打算定位到iOS 4.3及以上ARC有效地處理內存管理你。(NSObject的子類)

如果您打算定位到iOS 4.2,那麼你將無法使用weak引用(你將使用unsafe_unretained)。 iPhone 3g? &的iPod touch第二代都停留在這個操作系統級別,因爲有很多這些設備仍然在使用很多開發商仍在針對他們的。

如果您打算在早於4.2的目標iOS(這很罕見),您一定需要學習MRC(手動引用計數)。

如果您計劃建立Mac應用程序,有一個平臺上可用的垃圾收集器。 ARC也是一個選項(完整ARC 10.7,沒有弱支持10.6)。

4

「舊」風格僅僅是引用計數來管理對象的生命週期。其實並沒有那麼重要,但它可能很容易出錯,並會導致各種悲傷。如果你剛剛開始,我個人建議你學會使用ARC進行編程。當您需要使用C庫對象(如CoreFoundation或CoreGraphics)時,仍然可以處理引用計數。

7

值得注意的是,當您在Xcode中啓動一個新項目時,默認情況下會選中ARC。這是一個很好的跡象,任何舊的做法都不推薦使用,蘋果將ARC視爲未來。作爲一名新的ObjC開發者,你的第一課可能是它永遠不會對蘋果進行上游遊戲。

此外,雖然它很容易老retain/release樣品轉換成ARC(在大多數情況下,只是降大任於retain S,release s和autorelease S),反是不正確的。我已經看到很多樣例代碼出現了,寫成了ARC風格。所以剛開始的時候,學習ARC的方法會花費更多。

注意這並不意味着您不必理解引用計數。它仍然是對象生命週期的重要組成部分,您仍然需要了解這些事情(如果只知道何時使用weakstrong引用)。但是,當需要編寫代碼時,請使用ARC編寫代碼。

0

這將是一個偉大的想法,只是走了過來,並明白這是怎麼回事,但對於開發它不是必要的,因爲你可以看到最如果不是所有的開發商已經把他們的部署目標到iOS 5.0以上版本,所以你很可能不會在手工引用計數下發展。

但是,如果您打算在CFStringRef等代碼中使用非ROP可繼承對象指針,則可能需要真正查看非ARC,因此您可以理解橋等事情,因爲可以將ARC和非ARC代碼組合在一起一個項目。