NSString: isEqual vs. isEqualToString

后端 未结 5 749
攒了一身酷
攒了一身酷 2020-11-28 06:36

What is the difference between isEqual: and isEqualToString:?

Why are classes adding isEqualTo* methods (isEqualToArray for NSArray, isEqua

5条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-28 06:45

    Expanding on @Abizern and @Jonathan Dann answers, both isEqual and isEqualToString work with nil values.

    - (void)testStringEqual {
        NSString *string = nil;
    
        STAssertFalse([string isEqual:@"test"], @"NSString isEqual");
        STAssertFalse([string isEqualToString:@"test"], @"NSString isEqualToString");
    
        // Note that these both return NO
        STAssertFalse([string isEqual:nil], @"NSString isEqual");
        STAssertFalse([string isEqualToString:nil], @"NSString isEqualToString");
    
        string = @"test";
    
        STAssertTrue([string isEqual:@"test"], @"NSString isEqual");
        STAssertTrue([string isEqualToString:@"test"], @"NSString isEqualToString");
    
        STAssertFalse([string isEqual:nil], @"NSString isEqual");
        STAssertFalse([string isEqualToString:nil], @"NSString isEqualToString");
    }
    

提交回复
热议问题