var label1: UILabel? = UILabel()
weak var label2 = label1
label1 = nil这里有些混淆:在这3行之后,label1是零,但是label2仍然有引用。根据我的理解,它应该是零,因为它是弱的,所以它不会有很强的把握的参考。
为什么这个不起作用?
另一个问题:
func request() { [weak self] complete in
guard let strongSelf = self else { return }
strongSelf.printSomething()
strongSelf.doSomething()
}在互联网请求回调中,我指定弱自我,并保护有一个strongSelf,以确保如果self未被释放,它将成功。问题是,如果当防线运行后,自我分配到其他地方,strongSelf还会活着吗?它对自我有很强的控制力吗?(将+1引用计数添加到self中,这样就不会释放自我的内存了吗?)
发布于 2017-11-22 01:39:13
在操场上,试试这个:
class Node {}
var node1: Node? = Node()
weak var node2 = node1
node1 = nil
print(node2 ?? "node2 is nil!")UILabel的行为是不同的,因为正如Paulw11所暗示的,PlaygroundPage本身是保留的。
https://stackoverflow.com/questions/47425347
复制相似问题