IOS-KVC/KVO
다음 대상 이 존재 합 니 다.속성 name 을 알 고 있 습 니 다.값 을 얻 을 수 있 습 니 다:
id p=[[Person alloc] init];
NSString *name=[p valueForKey:@"name"];
만약 에 하나의 배열 이 있 고 그 안에 일련의 대상 이 존재 한다 고 가정 하면 우 리 는 특정한 속성 을 꺼 내 하나의 대열 에 두 고 싶 습 니 다.다음 과 같 습 니 다.
Book *book1=[[Book alloc] init];
book1.name=@"effctive c++";
Book *book2=[[Book alloc] init];
book2.name=@" more effctive c++";
Book *book3=[[Book alloc] init];
book3.name=@" most effctive c++";
NSArray *arr=@[book1,book2,book3];
NSLog(@"%@",[arr valueForKey:@"name"]);
생활 속 에서 우 리 는 확실히 이상 의 수요 가 존재 한다.
KVO 는 값 을 설정 하 는 과정 에서 이 를 감청 하 는 과정 으로 업무 논리 에 대한 검증 을 실현 하 는 것 을 말한다.
//
Book *book1=[[Book alloc] init];
//
BookObserve *observe=[[BookObserve alloc] init];
// -
[observe observeValueForKeyPath:@"name" ofObject:book1 change:nil context:@"sadsada"];
// -02
[book1 addObserver:observe forKeyPath:@"name" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
book1.name=@" most effctive c++";
NSLog(@"%@",book1.name);
// -02
[book1 removeObserver:observe forKeyPath:@"name"];
감청 대상 에 대해 서 는 NSObject 의 파생 류 이기 때문에 어떠한 대리 도 실현 할 필요 가 없다.
.m 파일 에서 다음 과 같은 방법 을 실현 하면 감청 할 수 있 습 니 다.
#pragma mark keyPath: object: change:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.