iOS 关于一个NSArray数组对象为Null的时候调用 .count 崩溃问题

1、今天遇到一个问题使用第三方SDK,在初始化SDK的时候,SDK内部返回了一个数据对象,但是这个对象本身是一个Null类型,所以在判断这个数组的时候出现闪退问题!
iOS 关于一个NSArray数组对象为Null的时候调用 .count 崩溃问题_第1张图片
-w816
  • 在第1步SDK返回的对象list前面声明为NSArray类型,看到这里所以用了一个数组的常规方法进行判断,忽略了这个对象是被_Nullable修饰,就导致SDK内部返回的list为Null类型,所以在第2步的时候调用.count方法导致出错:
-w927
2、[NSObject(NSObject) doesNotRecognizeSelector:] + 132

因为NSNull类型对象找不到count这个方法,因为runtime消息转发机制,系统最终调用doesNotRecognizeSelector抛出异常。

3、总结

所以在以后使用方法,或者类型判断的时候,多考虑综合情况,尽量做好容错处理,避免一些特殊数据结构,或者数据类型问题导致崩溃,也是提高程序健壮性的一个标注!还有就是千万不要相信后台,做好前端的容错处理,最后代码修改为:

iOS 关于一个NSArray数组对象为Null的时候调用 .count 崩溃问题_第2张图片
-w790

你可能感兴趣的:(iOS 关于一个NSArray数组对象为Null的时候调用 .count 崩溃问题)