Class __weak *variable = preExistingObjectWithStrongReference;
如果调用上面的代码,然后新指针'variable'指向具有强引用的对象,并为其分配__weak属性...
这只是意味着引用计数保持不变吗?或者它是否意味着原始对象现在不再被强引用?
答案 0 :(得分:1)
__ weak指定不使引用对象保持活动状态的引用。当没有强弱时,弱引用设置为nil 对象的引用。
这意味着只要对同一对象有任何其他强引用,就可以安全地使用变量。在某种意义上,您可以将其视为“引用计数保持不变”,如您所说。
答案 1 :(得分:1)
既不;这意味着只要其他人强烈指向,编译器就会使引用保持活动状态。如果没有更多强引用,并且引用您的weak
指针的所有对象都消失了,则该对象将被释放。通常,您只对您不拥有的对象使用weak
。如果你拥有它们(即它属于“属于”类),那么strong
是更好的选择。 weak
本质上是一个未保留的属性,除了取消分配对象时,弱指针自动设置为nil。