Junior
O que é o centro de notificações?
sobes.tech IA
Resposta da IA
O centro de notificações, ou NotificationCenter, é um mecanismo no Foundation que implementa o padrão "Observador" (Observer). Permite que objetos enviem notificações de forma ampla a outros objetos que estão inscritos nelas.
Componentes principais:
- Publisher (Emissor): Objeto que publica a notificação.
- Observer (Observador): Objeto que se inscreve na notificação e reage a ela.
- Notification (Notificação): Objeto que representa o evento em si. Contém o nome da notificação, o remetente e um dicionário opcional de informações do usuário.
Vantagens:
- Baixo acoplamento entre objetos.
- Conveniente para distribuir eventos a muitos assinantes.
Desvantagens:
- Complexidade na depuração devido à interação indireta.
- Problemas potenciais na gestão do ciclo de vida dos observadores se não forem removidos corretamente.
Exemplo de publicação e assinatura:
import Foundation
// Nome da notificação
extension Notification.Name {
static let myCustomNotification = Notification.Name("myCustomNotification")
}
// Emissor
class Publisher {
func publishNotification() {
let userInfo: [AnyHashable: Any] = ["data": "some important data"]
NotificationCenter.default.post(name: .myCustomNotification, object: self, userInfo: userInfo)
print("Notificação publicada")
}
}
// Observador
class Observer {
init() {
// Inscrição na notificação
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: .myCustomNotification, object: nil)
}
// Método chamado ao receber a notificação
@objc func handleNotification(_ notification: Notification) {
print("Notificação recebida!")
if let userInfo = notification.userInfo {
print("Informações do usuário: \(userInfo)")
}
}
deinit {
// Cancelar inscrição na notificação ao desinicializar
NotificationCenter.default.removeObserver(self)
}
}
// Uso
let publisher = Publisher()
let observer = Observer()
publisher.publishNotification()