1、今天遇到一个问题使用第三方SDK,在初始化SDK的时候,SDK内部返回了一个数据对象,但是这个对象本身是一个Null类型,所以在判断这个数组的时候出现闪退问题!
- 在第1步SDK返回的对象list前面声明为NSArray类型,看到这里所以用了一个数组的常规方法进行判断,忽略了这个对象是被_Nullable修饰,就导致SDK内部返回的list为Null类型,所以在第2步的时候调用.count方法导致出错:
2、[NSObject(NSObject) doesNotRecognizeSelector:] + 132
因为NSNull类型对象找不到count这个方法,因为runtime消息转发机制,系统最终调用doesNotRecognizeSelector抛出异常。
3、总结
所以在以后使用方法,或者类型判断的时候,多考虑综合情况,尽量做好容错处理,避免一些特殊数据结构,或者数据类型问题导致崩溃,也是提高程序健壮性的一个标注!还有就是千万不要相信后台,做好前端的容错处理,最后代码修改为: