我已经通过以下方式获得了在SCNAction块中引用self的代码:
spawnAction = SCNAction.runBlock({ node in
dispatch_async(dispatch_get_main_queue(),{
[weak self] in
if let actualSelf = self {
actualSelf.spawnDelegate?.spawnRiverCrosser(node.position)
}
})
})
当我将此类设置为nil时,我的deinit方法不会被调用。如果我注释掉这行
,就会调用它actualSelf.spawnDelegate?.spawnRiverCrosser(node.position)
我读到了保留周期,我确实理解如果我有任何强引用,这个方法不会被调用,但是尽管有很多StackOverflow答案表明,通过使用闭包[弱自我]问题应该得到解决。我不明白为什么它不起作用。