-[NSNull isEqualToString:]: unrecognized selector sent to instance

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])
    {
        
    }

你可能感兴趣的:(-[NSNull isEqualToString:]: unrecognized selector sent to instance)