iOS代理不回调的多种原因
来源:互联网 发布:windows player手机版 编辑:程序博客网 时间:2024/05/19 02:04
- 没有设置代理 XXX.delegate = self
- 方法名写错
- 新方法得判断iOS版本
- 引用对象被释放了
- 具体功能info.plist配置错误
- 在block中设置有时会出现代理不回调问题(用通知代替)
错误1,2 :
对于错误1,2一般是很新的新手或者老手脑袋短路极不正常时犯的错误.具体就不讨论了(也没什么好讨论的).
错误3 :
这个错误一般也可以忽略,因为使用高级API程序直接会崩溃.
错误4 :
(比较常见原因)
引用对象呗释放了:
这个错误较之于上面三个有点难度,解决这个错误需要对内存管理有所了解.如果内存管理不好,这里也很容易出现EXC_BAD_ACCESS崩溃.所以检查对象的生命周期,代理要设置成全局变量,不要设置成局部变量.
代理设置使用weak,避免造成循环引用.而且要在dealloc方法中将代理设置为nil.
* 注意: 不要使用assign,因为assgin类型在使用结束后不会设置成nil,此时发消息的话会EXC_BAD_ACCESS.
错误5 :
这个问题是在处理特定功能时才能遇到的,不具有普遍性.比如使用CLLocationManager获取地理位置时不进代理的回调.你代理明明设置的很清楚,也遵循代理了,对象也没有被释放,但是代理就是不进,是不是很迷惑很纠结. 此时代理不进的另一个原因就是info.plist没有配置正确.
因为获取地理位置需要配置info.plist的属性: NSLocationAlwaysUsageDescription 或者NSLocationWhenInUseUsageDescription.
错误6 :
如果大家也遇到这个问题,这里可以作为一个小参考.
参考链接:http://blog.csdn.net/soindy/article/details/52240663
阅读全文
0 0
- iOS代理不回调的多种原因
- iOS代理不回调的6种原因
- iOS定位不调用代理方法的可能原因
- IOS 多种反向传值对比(代理,block,通知)
- iOS---tableView的代理
- iOS 代理的使用
- IOS的代理模式
- iOS 代理的使用
- iOS代理的使用
- IOS 代理的使用
- 雾里看花 -存在多种解决方案的一个原因
- ArcSDE服务不能启动的原因有多种
- 内存溢出的多种原因及优化方法
- jvm 内存溢出的多种原因及优化方法
- 内存溢出的多种原因及优化方法
- 网络编程时使用代理的原因
- UITableView代理方法不执行的原因
- Chrome无法使用shadowsocks代理的原因
- DPDK+OVS+QEMU搭建vhost-user实验环境
- Hibernate配置以及增删改查实现
- mongoDB启动过程详解
- 大菲波数(递推 + JAVA大数)
- Unity3D计时器四种写法
- iOS代理不回调的多种原因
- hdu 1269
- android活动的启动模式
- linux c语言之pipe()函数
- Struts2拦截器
- git命令大全--常用命令
- 检测到目标URL存在http host头攻击漏洞
- 【算法学习】一行核心代码实现阶乘函数和Fibonacci数列
- Leetcode之Non-decreasing Array 问题