我正在学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