iOS开发中你在调用
isEqualToString
是否也会遇到-[NSNull isEqualToString:]: unrecognized selector sent to instance 这种奔溃报告呢?不用慌,你需要判断!
// This is recommend
NSString *aString;
if ([aString isKindOfClass:[NSNull class]])
{
}
// This will complain: "Comparison of distinct pointer types ('NSString *' and 'NSNull *')"
if (aString != [NSNull null])
{
}
// This works (at least for strings), but isEqual: does different things
// for different classes, so it's not ideal
if ([aString isEqual:[NSNull null]])
{
}
// If you cast it to the class you're comparing against
// then you're good to go
if (aString != (NSString *)[NSNull null])
{
}
// But we can also just cast it to id and
// that works generically
if (aString != (id)[NSNull null])
{
}
// The thing that would be really cool,
// would be [NSNull null] returning
// id (like in the sample category below).
// Wouldn't count on that one though.
if (aString != [NSNull idNull])
{
}