做移动开发最怕什么,没错,万恶的闪退🌚。
无论缺省处理做的多好,闪退一下回到解放前😭
Null就是导致闪退原因之一,特别是上线之后,后台数据库查不到数据就给你Null
那么做好Null容错处理就成了必须的功课了
看看App启动之后做的

思路
- JSON取值就是危险区,因为我们不知道会返回什么数据给我们。
- JSON在OC中就是Dictionary,JSON取值就是Dictionary取键值
- Null系统自动成了NSNull类型
- OC和谐之母nil(因为我们给nil发任何消息都不会闪退)
整理下,下面就是我们想要的
// JSON取值,若为Null,那么就nil处理,防止给Null发消息导致闪退
id keyValue = [JSON objectForKey:key];
if ([keyValue isKindOfClass:[NSNull class]]) {
keyValue = nil
}
注意
❗️dictionary取键值,键不存在,那么键值必是nil。
其他
本来想用Runtime去hook的,结果发现对Dictionary取键值不行,后来看了其他的文章,大致的说法就是Runtime虽然厉害,但是小心炸到自己,特别是项目中第三方比较多的情况下。鉴于上面两个原因,自己做了简单封装,只能稍做整理。
Demo传送门🚪
网友评论