KVC와 KVO 원리 해석
KVC 키 값 인코딩(Key-value coding)
KVC는 우리가 문자열로 대상을 조작하는 데 편리한 메커니즘으로 대상을 조작할 때 사전과 같이 유연하게 할 수 있다.사전 전환 모델의 영역에서 응용하기에 매우 편리하고 KVC는 접근 제한의 일부 문제를 쉽게 돌파하여 개인 구성원에게 직접 접근할 수 있다
- (id)valueForKey:(NSString *)key;
- (void)setValue:(id)value forKey:(NSString *)key;
// “ ” , Path
- (id)valueForKeyPath:(NSString *)keyPath;
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
NSDictionary *dic = @{
@"name":@"test",
//KVC , ,
@"age":@18,
@"address":@"China"
};
[p setValuesForKeysWithDictionary:dic];
NSLog(@"name:%@ age:%ld address:%@",p.name,p.age,p.address);
@implementation Person {
NSString *_address;
}
Person *p =[[Person alloc] init];
[p setValue:@"China" forKey:@"address"];
NSString *ads = [p valueForKey:@"address"];
찾는 순서는 setAddress:==>address==>_isAddress==>address==>isAddress
KVO 키 값 관찰 Key-value observing)
간단하게 말하면 특정한 클래스의 속성에 관찰을 추가할 때 시스템은 이 클래스의 파생류를 만들고 파생류가 이 속성을 다시 쓰는 setter 방법으로 관찰 대상의 변화를 실현하고 이 대상의isa지침을 이 파생류를 가리킨다.대상이 새로 만든 하위 클래스의 실례가 됩니다.이것은 KVC를 바탕으로 이루어진 것으로 응답식 프로그래밍을 실현했고 내부적으로runtime의 특성을 운용했다.KVO를 수동으로 구현하는 방법http://tech.glowing.com/cn/implement-kvo/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.