【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(可选)代理方法时候才需要去判断是否响应,其实是判断可选方法是否有实现。
昨天在网上下载了一个例子,关于CALayer 绘图的,用到了layer.delegate,弄到工程里,绘图页面是通过导航push的,结果在pop出那个页面的时候崩掉了。
查看报错信息,说我那个类的实例被释放掉了,但是还是发送给了它信息。代码不多,我注释掉了“layer.delegate=self;”这句就不崩了。网上查了一下,得到了解决办法: 只要在dealloc里面将layer.delegate 置为nil就行了。
我在网上查阅了很多关于delegate的信息,说delegate可以在dealloc里面置为nil,这是一个保险的做法,但是又不是必须的。这样做的原因是可以避免这个类被释放掉了,但是delegate却还会被引用造成的问题。
但是我仍然不明白什么时候应该将delegate置为nil。如果有哪位知道,请不吝告知,谢谢!
顺带再补充一点:有人喜欢在delegate调用代理方法时判断delegate能否响应代理方法,我在查询上面的问题时在官方文档上看到,只有在调用optional(可选)代理方法时候才需要去判断是否响应,其实是判断可选方法是否有实现。
相关文章推荐
- ios:关于ASIHTTP:setDownloadProgressDelegate代理不声明协议的问题(已解决)
- 【iOS-Cocos2d游戏开发】关于CCSpriteSheet报错问题
- iOS开发-Protocol协议及委托代理(Delegate)传值
- iOS开发-Protocol协议及委托代理(Delegate)传值
- IOS 关于用xmppframework开发的若干问题(1)
- iOS 开发遇到的问题之(nil指针对NSDictionary及NSArray初始化的影响)
- iOS开发关于证书以及更换appid时调试发布问题
- iOS开发中关于多线程的问题(NSOperationQueue,NSThread,GCD)
- IOS开发之关于UIButton点击没有响应问题
- 关于IOS 开发遇到的问题,Code 126 Copy Pods Resource
- 【iOS-Cocos2d游戏开发】关于CCSpriteSheet报错问题
- 关于iOS开发归档与解归档路径问题
- iOS开发中,swift关于代理的问题
- 关于iOS开发中图片着色(变色)的问题
- iOS开发--关于监听UITextField的问题
- ios开发笔记--关于delegate(委托)的使用心得
- 关于IOS开发证书问题
- 关于IOS开发工具XCode工具出现 OS APPle LLVM 5.02 error问题
- iOS开发笔记--关于设置UIView的背景为图片的方法以及问题
- <iOS开发兼容问题>关于IOS6和IOS5旋屏问题