Programming/Mac & iOS

[Objective C] Notification 사용하기

MB Kyle KWON 2013. 8. 25. 14:01

 객체지향 프로그래밍에서 객체간 메시지를 주고 받는 상황을 비일비재하게 발생하게 됩니다. 객체간의 연관 관계가 존재한다면 단지 객체의 메소드를 호출하는 것만으로 메시지를 전달이 가능합니다. 하지만 객체간 연관 관계가 존재하지 않는다면 메시지를 존재하기 복잡해집니다. 이를 해결하기위해 제공하는 방법 중에 한 가지를 소개하겠습니다. 바로 Notification입니다.


 메시지를 송신할 객체는 NSNotificationCenter를 통하여 Notification을 송신하기 위한 객체를 받습니다. NSNotificationCenter의 [postNotificationName: object: userInfo:]를 통하여 Notification을 보내면 됩니다. 그러면 메시지를 수신할 객체는 어떻게 수신해야할까요?


 수신할 객체는 Observer를 등록해야 합니다. 먼저 Notification을 수신하기 위해서 송실할 때처럼 NSNotificationCenter를 받습니다. 이후, [addObserver: selector: name: object:]를 이용하여 Observer를 등록합니다. NSNotificationCenter는 NotificationName이 일치하는 객체들에게 Notification을 발생시킵니다. Notification을 수신한 각 객체들은 등록되어 있던 selector를 호출하여 상태의 변화를 update시킵니다.