İOS 5'e yükseltmeye karar verirsem tüm [myObject retain] ve [myObject release] ifadelerini kodumdan kaldırmam gerekir mi?
Evet, ancak XCode 4.2 bunu sizin için yapan yeni bir "Objective-C ARC'ye Geç" aracı (Düzenle-> Refactor menüsünde) içerir. Dealloc demek farklı bir hikaye. Yorumlarda belirtildiği gibi clang referansı, dealloc yönteminizi tutmanız gerektiğini belirtir:
Gerekçe: ARC, örnek değişkenleri otomatik olarak yok etse de, alıkonulamayan kaynakların serbest bırakılması gibi bir dealloc yöntemi yazmak için hala meşru nedenler vardır. Böyle bir yöntemde [super dealloc] çağrılmaması neredeyse her zaman bir hatadır.
ARC'yi yeni bir -fobjc-arc derleyici bayrağı kullanarak etkinleştirirsiniz. ARC, Mac OS X v10.6 ve v10.7 (64 bit uygulamalar) ile iOS 4 ve iOS 5 için Xcode 4.2'de desteklenir. (Zayıf başvurular Mac OS X v10.6 ve iOS 4'te desteklenmez). Xcode 4.1'de ARC desteği yoktur.
-
ARC kullanarak iOS 5 için yeni bir uygulama geliştirirsem, bir çeşit "geriye dönük uyumluluk" kontrolü uygulamam gerekir mi? Yani: iOS sürümünü kontrol etmem ve buna bağlı olarak tutma ve bırakma çağrısında bulunmam gerekecek mi? Yani, temel olarak, ARC tüm iOS sürümleri için mi yoksa sadece iOS 5 için mi mevcut?
Hayır, çünkü ARC sihrini derleme zamanında yapar, çalışma zamanında yapmaz.
Ne zaman alıkoyma, bırakma ve otomatik serbest bırakmayı kullanacağınızı hatırlamak yerine, ARC nesnelerinizin yaşam boyu gereksinimlerini değerlendirir ve derleme zamanında sizin için uygun yöntem çağrılarını otomatik olarak ekler. Derleyici ayrıca sizin için uygun dealloc yöntemleri oluşturur.
ARC Hakkında Daha Fazla Bilgi: http://clang.llvm.org/docs/AutomaticReferenceCounting.html