이 관찰자에 대한 코딩 호환 키 값이 아닌 잘오류 :이 클래스는 키 Y
[self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
작동하지만이 하나의 오류를 생성합니다.
[self.tableView addObserver:self forKeyPath:@"contentOffset.y" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSConcreteValue 0x6e3eda0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key y.'
왜?
우리가 도트 구문을 사용한다면 이해할 수 있도록 contentOffset이 NSObject에서 상속되어야합니다. 내가 맞습니까? – Voloda2
아닙니다. 내 편집 좀 봐. – dandan78
@ Voloda2 KVO는 런타임에 NSObject의 하위 클래스를 만드는 데 의존합니다. 이러한 하위 클래스는 속성에 대한 setter 메서드를 재정의하고 setter가 호출 될 때 알림을 게시합니다. 구조체에는 setter 메서드가 없으므로 이러한 알림을 삽입 할 방법이 없으므로 인스턴스 변수를 직접 수정하는 경우와 같은 결과가됩니다.이 경우 KVO 알림은 없습니다 – wattson12