문제

기본적으로 API에서 정보를 얻는 iPhone 응용 프로그램이 있습니다 (XML에서는 결국 JSON). 결과 객체는 일반적으로보기 컨트롤러 (주로 표)에 표시됩니다.

여기에 지금 건축이 있습니다.

원격 서버에서 다른 객체를 가져 오는 NSOperation 클래스가 있습니다. 이러한 각 NSOperation 클래스는 구문 분석 할 때 결과 객체를 다시 발사 할 수있는 사용자 정의 대의원 메소드를 취한 다음 더 이상 결과를 사용할 수없는 경우 방법이 있습니다. 따라서 대표의 프로토콜은 다음과 같습니다.

(void) ObjectTypeResult:(ObjectType *)result;
(void) ObjectTypeNoMoreResults;

솔루션이 잘 작동한다고 생각하지만 주변의 많은 대의원 프로토콜로 끝나고 뷰 컨트롤러는 이러한 모든 대표 방법을 구현해야합니다. 나는 그렇게 나쁘다고 생각하지 않지만 항상 더 나은 디자인을 찾고 있습니다.

그래서 저는 대의원의 사용을 제거하기 위해 nsnotifications를 사용하는 것에 대해 생각하고 있습니다. 알림의 userInfo 부분에 객체를 포함시키고 수신 된대로 객체를 게시 한 다음 더 이상 사용할 수없는 최종 이벤트를 게시 할 수 있습니다. 그런 다음 한 컨트롤러에서 여러 객체를 사용하는 경우에도 모든 데이터를 수신 할 각보기 컨트롤러에 하나의 메소드가있을 수 있습니다. †.

따라서 누군가가 각 접근 방식의 장단점/단점을 나와 공유 할 수 있습니다. 대의원보다는 이벤트를 사용하기 위해 코드를 리팩토링하는 것을 고려해야합니까? 특정 상황에서 하나보다 다른 것보다 더 낫습니까? 내 시나리오에서는 여러 곳에서 알림을 받기를 원하지 않으므로 프로토콜 기반 대의원이 갈 수있는 방법 일 수도 있습니다.

감사!

도움이 되었습니까?

해결책

사실, 디자인이 들립니다. 명확한 코코아 접근법은 대의원을 사용하고 있으며 주위에 물건을 던지는 것보다 훨씬 선호됩니다. 또한 프로토콜을 이러한 방식으로 정의하면 코드가 매우 명시적이고 이해하기 쉽습니다. 대체로 : 좋은 일을 계속하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top