我正在创建一个引用较弱的委托,并且需要经历几个完成(关闭),然后delegate
变为nil。当我删除weak
引用时,它可以正常工作。
weak var contentDelegate: ContentDelegate?
实际上是否可以在没有最佳实践的情况下创建没有weak
引用的委托属性?缺点是什么?
答案 0 :(得分:1)
实际上是否允许创建代表属性而不弱 快速参考最佳实践?缺点是什么?
是的,您可以创建没有weak
引用的委托。
不,这不在最佳实践范围之内。
缺点是存在保留周期的风险,其中引用不会从内存中释放出来,从而导致内存泄漏。
答案 1 :(得分:1)
如果您可以共享代码,那就太好了。
没有代码很难说,但是看起来您有异步调用,并且在某些异步调用delegate
上,我想它是控制器或从内存中释放的某些服务
如果您删除weak
,则delegate
和此委托的所有者在内存中彼此保持住时,将获得保留周期