OC-52가지 유효한 방법:8.등동성

2296 단어

두 측정 객체가 동일한 범주에 속하는 것으로 알려진 경우 동일한 방법으로 판단합니다.

  • =: 직접 이등호 판단
  • isEqual:isEqual판단상등
  • isEqual ToString: 문자열이 같은지 여부를 판단합니다
  • NSObject에서 계약은 객체를 판단하는 동일한 방법을 선언합니다.

  • - (BOOL)isEqual:(id)object;
  • + (NSUInteger)hash; 상술한 두 가지 방법의 기본 실현은'지침값'이 완전히 같을 때만 이 두 대상이 같다는 것이다.만약 isEqual이 두 대상이 같다고 판정한다면hash 방법은'일정'과 같은 값을 되돌려준다."hash 메서드가 동일한 값을 반환하는 경우 isEqual은""반드시 그렇지 않다""고 간주합니다."

  • 사용자 정의 객체 재작성 isEqual 메서드


    첫 번째 단계는 판단 클래스와 같은 방법을 사용자 정의합니다. 이 클래스는 LPAlertObject입니다.
    - (BOOL)isEqualAlertObject:(LPAlertObject *)object{
        if (self == object) {
            return YES;
        }
        if ([self class] != [object class]) {
            return NO;
        }
        NSString *name;
        LPAlertObject *alert = (LPAlertObject *)object;
        if (![_name isEqualToString:object.name]) {
            return NO;
        }if (_age != alert.age) {
            return NO;
        }
        return YES;
    }
    
  • 1.지침이 동일한지 판단
  • 2.소속 클래스가 동일 클래스인지 판단
  • 3.각 속성이 동일한지 판단하기 2단계 isEqual 다시 쓰기 방법
  • - (BOOL)isEqual:(id)object{
        if([self class] == [object class])
            return [self isEqualAlertObject:(LPAlertObject *)object];
        else
            return [super isEqual:object];
    }
    

    이 두 단계는 사용자 정의류의 등동성 판단 방법을 완성하였다

    등동성 판단의 집행 깊이


    등동성 판단 방법에서 모든 필드를 모니터링해야 하는지 여부는 개발자가 스스로 정의해야 한다. 예를 들어 어떤 데이터는 하나의 표지를 판단하면 같은 키와 유사한지 판단할 수 있다.

    용기 중 가변류의 등동성

  • 콜렉션: 대상을 콜렉션에 넣은 후 해시 코드를 바꾸지 마십시오. 콜렉션은 대상의 해시 코드에 따라 서로 다른'상자 수조'로 나뉘어집니다.만약 저장된 해시 코드를 다시 바꾸면, 이 저장된 그룹은 잘못된 것이다.해결: 예금 대상의 해시 코드가 더 이상 바뀌지 않도록 보증합니다.Collection 그림을 신중하게 수정
  • NSMutableSet:
  • 1.arrayA = [1,2];  Set,set (1,2)
    2.arrayB = [1,2];  Set,set (1,2)
     :set   
    3.arrayC = [2];  set,set (1,2),(2)
     :arrayC arrayC = [1,2];
     :set (1,2),(1,2)
     :setB = [set copy]; setB (1,2)
    

    set의 의미는 같은 변수를 저장하는 것을 허용하지 않습니다. 대상을 set에 저장하고 내용을 바꾸면 결과는 예측하기 어렵습니다.

    총결산

  • 1.모니터링 대상 등 동성은 isEqual,hash 이중 판단을 사용한다.
  • 2.같은 대상이 같은 해시 코드를 가지고 있으면 해시 코드가 같은 대상이 반드시 같지는 않다.
  • 3.사용자 정의 대상의 등동성은 특수 속성에 따라 판단하고 마지막에 모든 속성 값을 판단한다.
  • 4.해시 방법을 작성할 때는 계산 속도가 빠르고 해시 코드가 충돌하는 알고리즘이 있어야 한다.
  • 좋은 웹페이지 즐겨찾기