내가 생성한 하위 객체에서 이벤트를 상위객체로 보내는 방법! – 2부 NotificationCenter패턴

델리게이트는 A객체와 B객체가 강하게 묶여 객체가 여러개가 되면 관리가 힘이 들어진다. 예를 들어 결제 과정을을 본다면 결제 안내 페이지에서 금액이 2000원으로 나온다고 하고 여기서 쿠폰을 사용한다고 해보자. 쿠폰 선택화면 안에 프로모션 화면등 그 안에 2~3단계의 화면이 더 들어갈 수도 있다.  최종적으로 결정하는 화면과 제일 처음에 봤던 결제 화면간을 델리게이트로 연결을 하면 여간 복잡하고 귀찮은 일이 아니다. 이럴때는 NotificationCenter를 사용하는게 좋다. 중간에 NotificationCenter가 메시지를 관리해서 처음 결제화면에 구독을 누르고 마지막 쿠폰 화면에서 NotificationCenter로 알림을 보내면 간단하게 데이터를 주고 받을 수 있다.

 

구독 할 객체(결제 화면)에서 간단하게 구독할 Notification의 이름을 정해주고 해당 이름으로 알림이 오면 호출할 메소드를 정해준다.

 

그후 알림을 보낼 (쿠폰화면)에서 취할 액션에 다음과 같이 NotificatinoCenter로 알림을 보낸다

 

이제 마지막으로 알림을 받은 객체(결제화면)에서 알맞게 이벤트 처리를 해주면 된다. 만약 해당 알림을 더 이상 사용할거 같지 않다면 반드시 – (void)removeObserver:(id)observer name:(nullable NSString *)aName object:(nullable id)anObject; 등을 호출하여 알림 구독을 취소해주는게 앱 성능향상에 큰 도움이 된다.

스크린샷 2016-03-17 오후 3.44.14

 

 

델리게이트 패턴보다 더 쉽고 간단하고 편하게 사용 할 수 있지만 너무 많이 쓰면 나중에는 어떤 화면에서 노티피케이션을 보냈는지 모르고 예상치 못한 알림의 발송등으로 디버깅하기가 매우 힘들어진다. 개발자의 판단에 맞추어 알맞은 패턴을 사용하는게 좋겠다.

예제 다운로드

 

 

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.