250x250
반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

스윞한 개발자

IOS UIKit 앱개발 노티피케이션 센터, 이벤트 전달 본문

Swift 실습

IOS UIKit 앱개발 노티피케이션 센터, 이벤트 전달

스윞남 2024. 1. 29. 01:31
728x90
반응형
SMALL

IOS UIkit 앱 개발에서 NotificationCenter와 이벤트 전달에 대해 알아보겠습니다.

 

 

iOS UIKit에서 Notification Center(노티피케이션 센터)를 사용하여 이벤트를 전달하는 방법은 다양한 부분에서 활용됩니다. Notification Center는 객체 간의 통신을 가능하게 하는 매커니즘 중 하나로, 하나의 객체에서 발생한 이벤트를 다른 객체들에게 알릴 수 있습니다. 아래는 노티피케이션 센터와 이벤트 전달에 대한 기본적인 내용입니다.

Notification Center 기본 개념

1. NotificationCenter 생성:

let notificationCenter = NotificationCenter.default

 

2. 이벤트 등록(옵저버 등록):

notificationCenter.addObserver(self, selector: #selector(handleNotification(_:)), name: Notification.Name("CustomNotification"), object: nil)

 

  • self: 옵저버로 등록할 객체
  • #selector(handleNotification(_:)): 이벤트 핸들러 메서드
  • name: 이벤트의 이름 (문자열 또는 Notification.Name)
  • object: 특정 객체에서 발생한 이벤트만 수신 (nil이면 모든 객체에서 발생한 이벤트 수신)

3. 이벤트 발생(노티피케이션 전송):

notificationCenter.post(name: Notification.Name("CustomNotification"), object: self)
  • name: 등록된 옵저버들에게 전달될 이벤트의 이름
  • object: 이벤트를 발생시킨 객체 (nil이면 모든 객체)

4. 이벤트 핸들러 메서드 작성:

@objc func handleNotification(_ notification: Notification) {
    // 이벤트를 수신했을 때 실행할 코드
}

 

class Sender {
    func sendNotification() {
        NotificationCenter.default.post(name: Notification.Name("CustomNotification"), object: self)
    }
}

class Receiver {
    init() {
        NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: Notification.Name("CustomNotification"), object: nil)
    }

    @objc func handleNotification(_ notification: Notification) {
        // 이벤트를 수신했을 때 실행할 코드
        if let sender = notification.object as? Sender {
            print("Notification received from \(sender)")
        }
    }
}

// 사용 예시
let sender = Sender()
let receiver = Receiver()
sender.sendNotification()

 

NotificationCenter는 앱 내에서 컴포넌트 간에 메세지를 보내고 받을 수 있는 메커니즘을 제공하는 클래스 입니다. 이를 사용하여 한 컴포넌트에서 발생한 이벤트를 다른 컴포넌트가 감지하고 이에 대응할 수 있습니다.

 

* 노티피케이션 센터

1. 이벤트 감지와 처리 : 하나의 객체가 특정 이벤트를 발생시켰을 때, 다른 객체들이 이를 감지하고 적절한 동장을 수행할 수 있습니다.
2. 뷰 간 통신 : View Controller 간에 데이터나 상태를 전달하거나 변경된 데이터를 업데이트하는 데 사용할 수 있습니다.
3. 앱 내 외부 통신 : 앱 내에서 발생한 이벤트를 다른 앱의 컵포넌트들과 공유하거나, 다른 앱이나 확장 앱과 통신하는 용도로 사용할 수 있습니다.

 

전 시간에 사용했던, 팝업창을 만드는 실습을 이용해 이벤트 전달 NotificationCenter에 대해 공부해보겠습니다.

 

viewDidLoad에서
먼저 노티피케이션이라는 방송 수신기를 장착합니다.

 

새로운 버튼을 하나 생성해줍니다.

 

 

방송을 수신합니다.


버튼 클릭시 실행창을 닫아줍니다.

 

중요
노티피케이션 센터를 등록 해제를 해줘야합니다. 메모리 할당 해제

 

 

참고(출처) : 개발하는 정대리

728x90
반응형
LIST