首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速弱参考混淆

快速弱参考混淆
EN

Stack Overflow用户
提问于 2017-11-22 01:16:45
回答 1查看 292关注 0票数 1
代码语言:javascript
复制
var label1: UILabel? = UILabel()

weak var label2 = label1

label1 = nil

这里有些混淆:在这3行之后,label1是零,但是label2仍然有引用。根据我的理解,它应该是零,因为它是弱的,所以它不会有很强的把握的参考。

为什么这个不起作用?

另一个问题:

代码语言:javascript
复制
func request() { [weak self] complete in
    guard let strongSelf = self else { return }
    strongSelf.printSomething()
    strongSelf.doSomething()
}

在互联网请求回调中,我指定弱自我,并保护有一个strongSelf,以确保如果self未被释放,它将成功。问题是,如果当防线运行后,自我分配到其他地方,strongSelf还会活着吗?它对自我有很强的控制力吗?(将+1引用计数添加到self中,这样就不会释放自我的内存了吗?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 01:39:13

在操场上,试试这个:

代码语言:javascript
复制
class Node {}

var node1: Node? = Node()
weak var node2 = node1
node1 = nil
print(node2 ?? "node2 is nil!")

UILabel的行为是不同的,因为正如Paulw11所暗示的,PlaygroundPage本身是保留的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47425347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档