개별 모델 객체에 대한 속성 변경에 관심이있는 모델 객체 및 컨트롤러 객체의 목록이 있다고 가정 해보십시오. 객체를 추가 할 때 컨트롤러와 모델 객체간에 KVO를 사용하고자하는 각 키에 대해 addObserver를 사용합니다. 이제 관찰 된 객체 중 하나가 사라지면 특정 키에 대한이 개별 객체의 변경 사항을 관찰하지 않도록 View Controller에 알려야합니다.개별 관측 된 키의 KVO 정리
우아한 방법은 무엇입니까? 내가 생각할 수있는 가장 좋은 방법은 내 컨트롤러에서 addObserver라고 부르는 새 키 kRemoveObject를 추가하는 것입니다.이 키는 객체가 삭제되기 전에 트리거됩니다. 그런 다음 특정 인스턴스에 대한 kRemoveObject를 포함하여 모든 관찰 된 키를 제거합니다. 누구든지 더 깨끗한 방법을 알고 있습니까? 이것은 약간 성가시다.
컨트롤러에 대한 참조를 얻기 위해 관찰 된 객체를 사용 : 내 머리 위로 떨어져
__block은 유지주기를 중단하지 않습니다. __weak을 사용해야합니다 – user1687195
KVO는 큰 switch 문을 사용하도록 강요하지 않습니다. 그렇게하는 경우 구현을 재검토하고 싶을 수 있습니다. – quellish