iOS - KVO

1353 단어
 :Mitchell 

소개

  • 전칭: Key Value Observing(키 값 감청), 즉 매번 대상의 속성이 바뀌면 감청자가 통지를 받는 흔한 개발 모델이다.

  • 역할

  • 감청 모델의 속성 값의 변화
  • 단계

  • 감청기 추가
    //  b a name 
    [a addObserver:b forKeyPath:@"name" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:@"test"];
    
  • 감청기에서 감청 방법 실현
    -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change     context:(void *)context
    {
        NSLog(@"%@ %@ %@ %@", object, keyPath, change, context);
    }
    
  • 어떤 속성을 감청하지 않기
  • 선택
    //  key  
    +(BOOL)automaticallyNotifiesObserversForKey:(NSString *)key{
        //  key
        if ([key isEqualToString:@"link"]) {
            return NO;
        }
        // 
        return [super automaticallyNotifiesObserversForKey:key];
    }
    

    4. KVO 실현 원리

  • 애플 문서에 따르면:
  • 자동 키 값 관찰 기술은isa-swizzling 기술을 사용하여 실현한다.한 관찰자가 한 대상의 속성을 관찰하기 시작했을 때 관찰 대상의isa지침은 수정되었고 원래의 클래스가 아닌 중간 클래스를 가리켰다.
  • KVO의 실현을 간단하게 서술하고 대상을 관찰할 때 새로운 클래스가 동적으로 만들어진다.이 클래스는 대상의 원래 클래스를 계승하고 관찰된 속성의setter 방법을 다시 썼다.새로운 방법은 원래setter 방법 이전과 이후에 모든 관찰 대상 값의 변경 사항을 알립니다.그리고 이 대상의 이사 바늘을 이 중간류를 가리킨다.뿐만 아니라 애플은 -class의 방법을 다시 써서 개발자들이 여전히 원래의 종류로 보일 수 있도록 했다.

  • 참조 링크: KVO 구현 방법

    좋은 웹페이지 즐겨찾기