自己。在尾随迅速关闭,意义和目的?

Posted

技术标签:

【中文标题】自己。在尾随迅速关闭,意义和目的?【英文标题】:self. in trailing swift closures, meaning and purpose? 【发布时间】:2017-04-01 15:15:12 【问题描述】:

每当我对动作使用尾随闭包时...示例:

run(SKAction.wait(forDuration: 10))timeRemains = false

我看到了这个:

在闭包中引用属性 (anything) 需要明确的“自我” 使捕获语义明确。

这是什么意思?它是关于什么的?我很好奇,因为我只在我想在尾随闭包中调用的属性或函数的上下文/范围内执行此操作,所以不知道为什么我需要 `self 并着迷于使用这个词

“语义”

这里。它有什么深刻的含义吗,如果我理解了这个,我会神奇地理解闭包吗?

【问题讨论】:

【参考方案1】:

它是否有一些深刻的含义,如果我理解了这个,我会神奇地理解闭包吗?

没有,也没有。或者也许,也许,也许。

这种语法要求的原因是,这可能真的一个闭包,也就是说,它可能捕获并保留它的引用环境(因为你是匿名函数传递可能会在某处存储一段时间)。这意味着,如果您在此处引用 self 的某些属性,例如 myProperty,您实际上捕获了对 self 的引用。 Swift 要求您明确 承认这一事实(通过说self.myProperty,而不仅仅是myProperty),以便了解正在发生的事情。

为什么你需要理解它?因为在某些情况下,您可能会以保留周期结束,或者以其他方式以您没想到的方式保留 self 的生命周期。这是让你思考这个事实的一种方式。

(如果知道这个特定的函数将充当闭包,即它会立即执行,那么就不存在这样的危险,Swift 会要求你明确地说self。)

【讨论】:

优秀的答案! Apple 的 Swift 编程语言指南详细介绍了“闭包的强参考循环”here。

以上是关于自己。在尾随迅速关闭,意义和目的?的主要内容,如果未能解决你的问题,请参考以下文章

我的约束破坏日志没有任何意义,有人可以帮助我理解吗?

流媒体平台为什么要实现网络负载均衡?有什么意义?

鸢尾花决策树算法选题的目的和意义

网络安全课程目的

构建基因文库的目的和意义?

读书的意义