iOS KVO(Key-Value Observing) 요약
KVO는 NSNotificationCenter와 비슷한 점이 많습니다.우선, KVO는 피관찰자에게 관찰자를 추가해야 한다.addObserver:forKeyPath:options:context:.관찰을 취소하고removeObserver:forKeyPath:context:.
KVO는 NSNotificationCenter와 달리 어떤 방법을 수동으로 호출하지 않아도 된다. 관찰자가 도착하지 않으면 방송은 전송되고 KVO는 실행되지 않는다.KVO는 알림 메서드는 관찰자 객체가 있는 경우에만 수행됩니다.따라서 KVO는 성능에 대한 요구 사항이 높은 일부 지점에서 선택할 수 있습니다.
관찰자 등록
- (void)registerAsObserver
{
[object addObserver:inspector
forKeyPath:@"someProperty"
options:NSKeyValueObservingOptionNew
comtext:NULL];
}
알림 수신- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if(someCondition)
{
//do something
}
/*
Be sure to call the superclass's implementation
* if it implements it *
NSObject does not implement the method.
*/
[super observeValueForKeyPath:keyPath
ofObject:object
change:change
context:context];
}
관찰자 취소- (void)unregisterForChangeNotification
{
[observedObject removeObserver:inspector forKeyPath:@"someProperty"];
}
한 대상에 관찰자가 있는지 확인하는 방법에 대해
인터넷에서 찾아보니 관찰자가 nil로 돌아오지 않으면 [object observation Info] 방법이 있습니다.
대상에 대한 관찰자 삭제
@try
{
[object removeObserver:inspector forKeyPath:@"someProperty"];
}
@catch (NSException *e)
{
}
관찰자가 없는 대상에 대한 삭제를 방지하기 위해 프로그램crash.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.