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