会有同学使用这种写法
if (self.test) {
NSLog(@"不为空不为空不为空");
}
这种写法其实是有问题的
如图,赋值一个空字符串之后,也会走到不为空的条件里面,这显然不是我们所期望的。
我们可以自定义一个内联函数
/**
判断是否是空字符串,如果是返回YES,不是的话返回NO,验证前需要保证str为NSString类型
@param str 待验证的字符串
@return 返回结果
*/
static inline BOOL vv_isEmptyStr(NSString * _Nullable str)
{
if (!str) {
return YES;
}
if (![str isKindOfClass:[NSString class]]) {
#if DEBUG
NSLog(@"func vv_isEmptyStr, str must be kind of NSString class");
assert(NO);
#endif
return YES; //类型不匹配是当做空字符串处理,要不然很危险
}
if (str.length == 0) {
return YES;
}
return NO;
}
调用的地方如图所示
完毕