前提条件Swift 3

时间:2016-10-30 19:19:26

标签: ios concurrency swift3 grand-central-dispatch

我正在关注此链接上关于GCD的Apple上次会议:https://developer.apple.com/videos/play/wwdc2016-720/?time=33 我在这里谈到了前提条件:https://developer.apple.com/videos/play/wwdc2016-720/?time=1267,Swift 3中的一个新功能。 到此为止:https://developer.apple.com/videos/play/wwdc2016-720/?time=1474用于此: .register(observer:,queue :) enter image description here 我的问题:这个函数如何保留对象BusyControllerhttps://developer.apple.com/videos/play/wwdc2016/720/?time=1550

1 个答案:

答案 0 :(得分:0)

您问register(observer:queue:)如何保留BusyController

首先,让我们退后一步:让我们不要迷失他的榜样细节。他并不是说 会建立一个强大的引用,只是它可以,因此你应该谨慎对待{{1 }}

那么,deinit如何保留DataTransform?它只能保持对BusyController的强烈引用。请注意,请勿将此自定义observer方法示例与标准观察者方法混淆:他们只是说"想象register对象建立了对DataTransform的强引用..."

但是,他继续说"但是你是熟练的开发人员,而且你知道如何解决这个问题;使用BusyController引用。"因此,一般来说,我们不会编写观察方法来维持对观察者的强烈引用。

但是,正如他接着说的那样,即使你擅长避免强大的参考周期,对象图也会变得相当复杂,所以依赖{{{{{{{{{{{{{{{{{{{{{{ 1}}清理。他主张明确weak进程,并且可能使用前置条件来测试对象在时间deinit之前是否已失效。