PromiseKit在其网站上声明以下内容:
我应该担心保留周期吗?
tl; dr:在promise处理程序中使用self是安全的。
这是安全的:
somePromise.then { self.doSomething() }
提供
somePromise
解析后,then
将释放传递给的函数,因此[weak self]
无需指定。指定[无主的自我]可能很危险。
您是在告诉我不要担心保留周期吗?!
不,只是默认情况下,使用PromiseKit时不会引起保留周期。但是还是有可能...
这是否意味着我不应该[weak self]
在PromiseKit块中使用?有没有我仍然需要使用的情况[weak self]
?它到底如何防止保留周期?
该文档只是在说您不必担心PromiseKit会引入“强参考周期”(以前称为“保留周期”),因为当实现诺言并且块完成运行时,这些强参考会自动为您解决。选择强引用还是弱引用完全取决于您。
例如,如果您只是在场景中不再存在的UI元素上进行更新,则无需强烈引用已关闭的视图控制器。您将weak
在这种情况下使用。但是有时您需要强大的参考(例如,您可能希望更新基础模型以反映承诺的成功或失败)。
最重要的是,他们所说的是,您不应该让PromiseKit指示强引用还是弱引用,而应该由应用程序更广泛的设计要求来驱动。关于PromiseKit的唯一硬性规定是您应该避免unowned
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句