SORU
23 Aralık 2011, Cuma


ARC desteği sıralar gönderiyor mu?

Hakkında apple belgelerine okuyorum Sıralar Gönderme için "Hafıza Yönetimi":

Seni çöp toplama uygulaması uygulamak bile, hala korumak ve sıraları gönderme ve diğer gönderme nesneleri serbest bırakmak gerekir. Grand Central hafıza geri ödemelerine için çöp toplama modeli desteklemiyor Gönderme.

ARK çöp toplayıcı olmadığını biliyorum ama benim dispatch_queue_t dispatch_retain dispatch_release gerek yok emin olmak istiyorum

CEVAP
23 Aralık 2011, Cuma


Kısa cevap: EVET, ARC korur ve merkez sıralar serbest bırakır.







Ve şimdi uzun cevap için

Dağıtım hedef iOS 6.0 veya Mac OS X 10.8 veya daha düşük ise

Senin kuyruk dispatch_retain dispatch_release kullanmak gerekir. ARC onları yönetmek değil.

Dağıtım hedef ise iOS 6.0 veya Mac OS X 10.8 veya daha sonra

ARK senin için sıraya yönetecek. Eğer ARC etkinleştirilirse (ve olamaz) dispatch_retain dispatch_release kullanmak gerekmez.

Ayrıntılar

İOS 6.0 SDK ve Mac OS X 10.8 SDK, her nesne (dispatch_queue_t Bir de dahil olmak üzere) gönderme başlangıç da Objective-C nesne. Bu <os/object.h> başlık dosyasında belgelenmiştir:

 * By default, libSystem objects such as GCD and XPC objects are declared as
 * Objective-C types when building with an Objective-C compiler. This allows
 * them to participate in ARC, in RR management by the Blocks runtime and in
 * leaks checking by the static analyzer, and enables them to be added to Cocoa
 * collections.
 *
 * NOTE: this requires explicit cancellation of dispatch sources and xpc
 *       connections whose handler blocks capture the source/connection object,
 *       resp. ensuring that such captures do not form retain cycles (e.g. by
 *       declaring the source as __weak).
 *
 * To opt-out of this default behavior, add -DOS_OBJECT_USE_OBJC=0 to your
 * compiler flags.
 *
 * This mode requires a platform with the modern Objective-C runtime, the
 * Objective-C GC compiler option to be disabled, and at least a Mac OS X 10.8
 * or iOS 6.0 deployment target.

Bu anlamına gelir mağaza kuyruğunda NSArray NSDictionary, ya da bir özellik ile strong, weak, unsafe_unretained, assign, veya retain öznitelikleri. Ayrıca, eğer bir blok sıra başvurursanız, blok, sıra otomatik olarak korumak anlamına gelir.

Bu yüzdendağıtım hedef ise en az iOS 6.0ya Mac 10.8 ve OS Xvar ARC sağladıARC ve kuyruk, ve derleyici bir hata olarak dispatch_retain dispatch_release kullanmak için herhangi bir girişim bayrak. korumak yayınlayacak

Dağıtım hedef ise en az iOS 6.0ya Mac 10.8 ve OS XARC devre dışı bırakmışel ile ve kuyruk,. korumak serbest bırakmalısınız ^em>yadispatch_retain dispatch_release, çağırarakyaretain release sıra iletileri ([queue retain] [queue release] gibi) göndererek.

Eski olarak kullanılabilecek kod temeli ile uyumluluk için 0 24 *tanımlayarak Objective-C nesne olarak görme sırası derleyici engelleyebilirsiniz. Örneğin, .pch dosyası (#import herhangi bir ifade) bu koyabilirsiniz:

#define OS_OBJECT_USE_OBJC 0

veya inşa ayarlarında basit bir makro olarak OS_OBJECT_USE_OBJC=0 ekleyebilirsiniz. 0 ARC olacak OS_OBJECT_USE_OBJC ayarlarsanızdeğilya da senin için sıraya korumak serbest bırakma dispatch_retain dispatch_release kullanarak kendiniz yapmak zorunda olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bobono1baby

    bobono1baby

    14 AĞUSTOS 2011
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007