2010-12-06 2 views
4

MKMapView 영역이 변경되었을 때 알기를 원하는 객체가 있습니다. 그러나이 개체는지도보기의 대리인이 아닙니다.KVO를 통해 MKMapView 영역을 관찰 하시겠습니까?

[map addObserver:self forKeyPath:@"region" options:0 context:nil]; 

그러나, observeValueForKeyPath:ofObject:change:context:가 다시 호출되는되지 않습니다 map이 MKMapView 어디 있는지, 다음을 시도하고있다.

임시 해결 방안으로지도 영역이 변경되면지도 객체의 다른 객체가 알 수 있도록지도 대리자를 보유하고 있지만 두 객체가 실제로 관련되어 있지 않기 때문에 두 객체의 결합을 해제하고 싶습니다.

답변

9

코코아 (Touch)에서 프레임 워크 객체의 속성은 설명서에이 표시되어있는 경우에만 KVO 호환 으로 보장됩니다. -[MKMapView region]에 대한 문서는 그런 주장을하지 않으므로 KVO를 사용해서는 안됩니다. 일이 생겨도 완전한 컴플라이언스 또는 지속적인 성공을 보장 할 수 없습니다.

대신 위임 메서드를 사용하고 다른 개체에 메시지를 보내야합니다. 아마도 귀하의 대의원이 NSNotification을 방송하여 KVO와 비슷한 효과를 낼 수 있습니다.

+0

마이크 압둘라 (Mike Abdullah)가 말했듯이, NSNotification을 사용하는 것은 아마도 당신이 찾고있는 최선의 선택 일 것입니다. 그러면 개체가 분리됩니다. – afarnham

+0

너무 나쁜 KVO가 작동하지 않습니다. 'MKMapView'를 서브 클래스 화하고 UI를 갱신하기 위해 지역 변경 통지를 받기를 원한다면 매우 유용 할 것입니다 – Eugene

관련 문제