我正在學ARC。現在關於調零弱指針。我很瞭解所有功能。 弱引用的語義和GC系統的弱引用一樣,但是你知道,Objective-C沒有使用GC(除了特殊情況),所以我不明白它是如何工作的。ARC的調零弱指針行爲如何實現?
我有點複雜的人,所以我需要知道底層的實現主體接受使用的功能。但是,問題在於它很難找到描述歸零弱指針的原理:(
IMO,使這項工作的唯一方法是在運行時跟蹤並保持所有指向自身的指針,並將它們全部設置爲nil
當其引用計數變爲0
。但是,這看起來太沉重的和愚蠢的。我相信,在實際ARC實現中使用了很多更好的解決方案。
你能幫我找到文檔?還是直接說明會更偉大!
實際上,在ARC下,編譯器發出代碼來調用函數,比如'objc_storeWeak'和'objc_loadWeakRetain'。這些函數是一個記錄的API:http://clang.llvm.org/docs/AutomaticReferenceCounting.html#runtime – 2012-01-14 04:44:09
是的,這些函數是如何添加和刪除存儲在對象中的集合中的弱指針,如我所述當我說「ARC只是添加代碼來添加一個指針,該對象被分配給一個新的弱引用時,該指針」 – 2012-01-15 09:47:32
你知道弱指針是否歸零時,對象的引用計數下降爲0,還是在去分配時?我現在用一個「分配」指針遇到了一個問題,在那裏被引用的對象被重用,但仍然調用它的dealloc,因爲它的引用計數降到了0之間。我想知道零點弱指針是否能解決這個問題。 – fishinear 2013-03-07 08:35:39