2011-05-25 7 views
7

zaman bu gibi bazı kodlar:Objective-C çalışma zamanı, kullanıcı için ilişkilendirilmiş ilişkisel referanslar yayınlayacak mı?

objc_setAssociatedObject (
    obj, 
    &key, 
    val, 
    OBJC_ASSOCIATION_RETAIN 
); 

Ben tutulan değerini serbest bırakmak için

objc_setAssociatedObject (
    obj, 
    &key, 
    nil, 
    OBJC_ASSOCIATION_RETAIN 
); 

ilgili çağrı gerekir mi? Objective-C çalışma zamanı otomatik dealloc veya başka bir yerde ilişkilendirilmiş başvuruları serbest bırakıyor mu?

cevap

14

Ana nesne serbest bırakıldığında ilişkili nesneler serbest bırakılacaktır. OBJC_ASSOCIATION_RETAIN politika dizisi ilişkili nesne tuttuğunu belirttiği için nokta 1 'de

, dize overview hala geçerli: Özellikle bu örnek, dokümantasyon here bakınız. Dizi tahsis edildiğinde, ancak (2. noktada), overview serbest bırakılır ve böylece bu durumda da tahsis edilmiştir.

İlgili konular