您的位置:首页 > 移动开发 > IOS开发

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

2013-05-04 16:22 405 查看
        这里不说怎么使用delegate,那个教程上网一查一堆的。

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

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

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

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

      顺带再补充一点:有人喜欢在delegate调用代理方法时判断delegate能否响应代理方法,我在查询上面的问题时在官方文档上看到,只有在调用optional(可选)代理方法时候才需要去判断是否响应,其实是判断可选方法是否有实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: