programing

NSString: IsEqual 대 IsEqualToString

muds 2023. 8. 9. 21:06
반응형

NSString: IsEqual 대 IsEqualToString

사이의 차이점은 무엇입니까?isEqual:그리고.isEqualToString:?

클래스가 단순히 재정의하는 대신 IsEqualTo* 메서드(NSAray의 경우 IsEqualToArray, NSData의 경우 IsEqualToData의 경우 IsEqualTo* 등)를 추가하는 이유는 무엇입니까?isEqual:?

isEqual:문자열을 개체와 비교하고 반환합니다.NO개체가 문자열이 아닌 경우.isEqualToString:설명서에 나와 있듯이 두 개체가 모두 문자열임을 알고 있는 경우가 더 빠릅니다.

특별 고려 사항

두 개체가 모두 문자열이라는 것을 알고 있는 경우 이 방법은 동일성을 확인하는 더 빠른 방법입니다.isEqual:.

isEqualTo<Class>동일성에 대한 특정 검사를 제공하는 데 사용됩니다.예를 들어, 배열에 동일한 수의 개체가 포함되어 있고 지정된 인덱스의 개체가 반환되는지 확인합니다.YES를 위해isEqual:시험.

또한, 당신만의 글을 쓰는 것.-isEqual:그리고.-isEqualTo<Class>:방법, 관례는 0 인수를 허용하는 것입니다.-isEqual:그리고 0 인수에 대한 예외를 제기합니다.-isEqualTo<Class>:

@Abizern 및 @Jonathan Dann 답변 모두에 대해 확장합니다.isEqual그리고.isEqualToString와 함께 일하다.nil가치.

- (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");
}

제 생각에는 EqualToString과 마찬가지로 약간의 성능 향상을 제공하는 것 같습니다. 전달된 내용을 유형 검사할 필요가 없습니다.

저는 이것을 강력히 추천합니다.isEqualToString의 성능 이점은 기본적으로 대부분의 애플리케이션에서 무시할 수 있습니다.그러나 저자가 언급하는 두 가지 다른 차이점이 있습니다.

  • 형식 안전성
  • 그 길nil처리됨

언급URL : https://stackoverflow.com/questions/1292862/nsstring-isequal-vs-isequaltostring

반응형