NSnull 导致程序crash

没有判断类型为NSNULL的情况会crash,下边是自己的一些后续研究
json是很常用的网络数据包格式,客户端和服务端之间经常使用json来传输数据。对于一些字典类型的数据,如果某项数据为空,则会传'',使用JsonKit转换以后会生出相应的[NSNull null]对象,而这种对象对于iOS来说并不是十分安全的,例如约定好商品的某一项字段为string类型,结果JSON Kit转换为[NSNull null],这个时候如果不加判断就当做是NSString处理就会存在问题。所以对于这种数据类型直接转换为nil会更加安全,转换方法如下:

#define PASS_NULL_TO_NIL(instance) (([instance isKindOfClass:[NSNull class]]) ? nil : instance)

针对nil调用任何方法基本上都是安全的。

当然也可以每次都判断下,这就麻烦了,

data && ![data isKindOfClass:[NSNull class]] //data对象存在且 不是nsnull类型,这样在对其操作就安全了

有个疑问就是:
在model 终究不会crash,在字典中就容易出问题,求大神讲解

你可能感兴趣的:(NSnull 导致程序crash)