【iOS开发】---- 关于协议delegate在dealloc中置为nil的问题

        这里不说怎么使用delegate,那个教程上网一查一堆的。

        昨天在网上下载了一个例子,关于CALayer 绘图的,用到了layer.delegate,弄到工程里,绘图页面是通过导航push的,结果在pop出那个页面的时候崩掉了。

        查看报错信息,说我那个类的实例被释放掉了,但是还是发送给了它信息。代码不多,我注释掉了“layer.delegate=self;”这句就不崩了。网上查了一下,得到了解决办法: 只要在dealloc里面将layer.delegate 置为nil就行了

        我在网上查阅了很多关于delegate的信息,说delegate可以在dealloc里面置为nil,这是一个保险的做法,但是又不是必须的。这样做的原因是可以避免这个类被释放掉了,但是delegate却还会被引用造成的问题。

       但是我仍然不明白什么时候应该将delegate置为nil。如果有哪位知道,请不吝告知,谢谢!


      顺带再补充一点:有人喜欢在delegate调用代理方法时判断delegate能否响应代理方法,我在查询上面的问题时在官方文档上看到,只有在调用optional(可选)代理方法时候才需要去判断是否响应,其实是判断可选方法是否有实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值