일반적인 사용자의 접근 방법은 다음과 같이 쓸 수있다 :핵심 데이터의 사용자 지정 접근 방법, KVO를 사용하는 이유는 무엇입니까?
- (NSString *)name
{
[self willAccessValueForKey:@"name"];
NSString *myName = [self primitiveName];
[self didAccessValueForKey:@"name"];
return myName;
}
- (void)setName:(NSString *)newName
{
[self willChangeValueForKey:@"name"];
[self setPrimitiveName:newName];
[self didChangeValueForKey:@"name"];
}
그것은 setPrimitiveName
의 의미는 분명하다. KVC없이 "원시"변수에 접근하고 (접근 자 내부에서 실행 루프를 방지) 전달 된 값을 설정할 수 있습니다. 동일한 관찰을 게터에 적용 할 수 있습니다.
설명서에서 setPrimitiveName
은 변경 알림 방법을 사용 중지합니다 (예 : willChangeValueForKey
).
이제 내 질문은 다음과 같습니다. 왜 그 방법을 willChangeValueForKey:
및 didChangeValueForKey:
방법으로 마무리해야합니까?
NSManagedObject 모델링 속성 (KVO) 변화를 알림 관찰 자동 키 값을 비활성화하고 프리미티브 접근 방법은 액세스 및 변경을 호출하지 않는다 : 코어 데이터 프로그래밍 읽기
는 기입이 통지 방법. Mac OS X v10.4 코어 데이터의 unmodeled 속성 일 경우 자동 KVO도 비활성화됩니다. Mac OS X v10.5 이상에서는 Core Data가 NSObject의 동작을 채택합니다.
키 (액세서 또는 인스턴스 변수)에 액세스 할 준비가되었음을 알리고 그 작업을 완료해야하는 이유는 무엇입니까? 누구에게 통보됩니까?
희망 사항은 분명합니다. 미리 감사드립니다.
귀하의 지원에 +1. 이는 단지 견해 나 다른 것이 관련되어 있음을 알리는 데 필요한 것입니까? –
그 예가 지금까지 발견되었지만 더 흥미로운 것이있을 수 있습니다. –
예, 코어 데이터는 오류를 발생시키고 개체를 채우는시기를 알기 위해이를 사용합니다. –