在Swift 4中,如何删除基于块的KVO观察者?

在Swift 4中,如何删除基于块的KVO观察者?,第1张

概述如果我存储这样的观察者: let observer: NSKeyValueObservation = foo.observe(\.value, options: [.new]) { (foo, change) in print(change.newValue)} 一旦我不再需要它,如何删除/禁用/清除观察者? 我的foo实例没有任何类似于remove的方法接收NSKeyValueObse 如果我存储这样的观察者:
let observer: NSkeyvalueObservation = foo.observe(\.value,options: [.new]) { (foo,change) in    print(change.newValue)}

一旦我不再需要它,如何删除/禁用/清除观察者?

我的foo实例没有任何类似于remove的方法接收NSkeyvalueObservation实例,观察者本身也没有任何类似remove的方法.

在iOS 11中,您不必这样做.只是让观察者超出范围.让观察者在观察之前死亡或者让观察者在观察者面前放弃死亡不再有任何惩罚,所以你没有实际的工作要做.

另一方面,如果您确实要取消注册观察者,请将其从保留它的任何内容中删除,或者告诉它无效. (必须保留它,因为如果你不坚持观察者,它将会死亡,你的观察者功能永远不会被调用.)

(你说“如果我存储一个像这样的观察者”,但是你用它来存储它的方式是一种存储观察者的有点傻的方式.最好将它放在一个Set中,你可以从中删除它稍后,或者至少将它存储在一个Optional var中,以后可以将其设置为nil.)

总结

以上是内存溢出为你收集整理的在Swift 4中,如何删除基于块的KVO观察者?全部内容,希望文章能够帮你解决在Swift 4中,如何删除基于块的KVO观察者?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1048010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存