iOS代理不回调的多种原因

  1. 没有设置代理 XXX.delegate = self
  2. 方法名写错
  3. 新方法得判断iOS版本
  4. 引用对象被释放了
  5. 具体功能info.plist配置错误
  6. 在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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值