2014-07-25 1 views
0

보기 컨트롤러와 약한 참조를 통해 연결된 메뉴 컨트롤러가 있습니다. View Controller는 메뉴 컨트롤러에 대한 참조가 많습니다.KVO 옵저버 문제 제거

메뉴 컨트롤러는보기 컨트롤러에서 컬렉션보기의 일부 속성을 준수합니다. 메뉴 컨트롤러가 할당 해제 된 경우 [self.viewController.collectionView removeObserver:self forKeyPath:keyPath];을 호출하지만이 위치에서 self.viewController는 이미 nil입니다.

KVO 관측자를 어느 위치에서 제거해야합니까?

답변

2

나는 당신이 다른 방법으로 그렇게 믿습니다.

[object addObserver:menuController forKeyPath:@"openingBalance" ...]; 

그냥 addObserver: 방법에 대한 인수로 메뉴 컨트롤러를 통과하고 메뉴 컨트롤러에서 observeValueForKeyPath: 메소드를 구현 : 당신은하지 메뉴 컨트롤러, 뷰 컨트롤러에 옵저버를 추가해야합니다.

뷰 컨트롤러가 할당 해제되어 처음으로 관찰자가 제거 될 때 필요에 따라 관찰자를 제거 할 수 있습니다 (사용자가 dealloc 메서드에서 처리하려고한다고 생각합니다).

+0

고맙습니다.이 솔루션은 저에게 효과적입니다! – AlKozin