【问题标题】:UIWebViewDelegate manual release in ARC?UIWebViewDelegate 在 ARC 中手动发布?
【发布时间】:2012-05-25 14:27:30
【问题描述】:

UIWebViewDelegate 协议参考声明:

在释放已设置委托的 UIWebView 实例之前,必须先将 UIWebView 委托属性设置为 nil,然后再释放 UIWebView 实例。例如,这可以在您处理 UIWebView 的 dealloc 方法中完成。

在 ARC 中还需要吗?

【问题讨论】:

  • 我肯定会(并且会)。似乎有两个可能的问题。一个是强引用周期(又名保留周期)问题,我认为这里不适用。第二个是这个对象可能从另一个队列异步调用委托方法。也许不是问题,但鉴于文档的警告,我倾向于遵循确保nil 代表的建议。

标签: ios


【解决方案1】:

如果委托被定义为 WEAK 属性,则不需要取消委托,因为 ARC 会为您执行此操作。但是,如果类没有使用 ARC 编译,并且委托标记为“assign”,则必须小心并自己将其设置为 nil。

【讨论】:

  • 我查看了UIWebView的源代码。即使我为我的项目启用了 ARC,委托也被定义为分配(非弱)。看来我得自己处理了。
  • 我们将通过什么方法将委托设置为 nil?
  • @NicHubbard dealloc 是方法
  • @Stavash 在 ARC 下可以吗?
  • 不行,只是多余。
猜你喜欢
  • 2013-02-08
  • 2023-04-07
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多