2011-05-25 17 views
7

當某些代碼是這樣的:Objective-C運行時版本會保留用戶的關聯引用嗎?

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

我需要調用相關

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

釋放保留的價值? Objective-C運行時是否自動釋放dealloc或某處的關聯參考?

回答

14

當父對象被釋放時,相關對象將被釋放。參閱文檔here,具體地,本示例:

在點1,該字符串overview仍然是有效的,因爲OBJC_ASSOCIATION_RETAIN策略指定所述陣列保持關聯的對象。然而,當數組被解除分配時(在點2),overview被釋放,因此在這種情況下也被釋放。

相關問題