Junior
რა არის შეტყობინებების ცენტრი?
sobes.tech AI
პასუხი AI-სგან
ცნობის ცენტრი, ან NotificationCenter, არის Foundation-ის მექანიზმი, რომელიც განახორციელებს მონიტორინგის (Observer) ნიმუშს. იგი საშუალებას აძლევს ობიექტებს ფართოდ გავრცელონ შეტყობინებები სხვა ობიექტებს, რომლებიც მათზე გამოწერილი არიან.
ძირითადი კომპონენტები:
- გამომცემელი (Publisher): ობიექტი, რომელიც აქვეყნებს შეტყობინებას.
- მონიტორი (Observer): ობიექტი, რომელიც გამოწერილია შეტყობინებაზე და რეაგირებს მასზე.
- შეტყობინება (Notification): ობიექტი, რომელიც წარმოადგენს მოვლენას. შეიცავს შეტყობინების სახელწოდებას, გამგზავნს და ოპციონალურ მომხმარებლის ინფორმაციას.
უპირატესობები:
- სუსტი კავშირი ობიექტებს შორის.
- მოსახერხებელია მოვლენების გავრცელება მრავალი გამოწერილი მომხმარებლისთვის.
მოხერხებულობები:
- დათვალიერება რთულია, რადგან ურთიერთქმედება ირიბია.
- მონიტორების სიცოცხლის ციკლის მართვა შეიძლება სირთულეებით, თუ ისინი სწორად არ მოიხსნება.
მაგალითი გამოქვეყნება და გამოწერა:
import Foundation
// შეტყობინების სახელწოდება
extension Notification.Name {
static let myCustomNotification = Notification.Name("myCustomNotification")
}
// გამომცემელი
class Publisher {
func publishNotification() {
let userInfo: [AnyHashable: Any] = ["data": "მნიშვნელოვანი მონაცემი"]
NotificationCenter.default.post(name: .myCustomNotification, object: self, userInfo: userInfo)
print("შეტყობინება გამოქვეყნდა")
}
}
// მონიტორი
class Observer {
init() {
// გამოწერა შეტყობინებაზე
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: .myCustomNotification, object: nil)
}
// მეთოდი, რომელიც იძახება შეტყობინების მიღებისას
@objc func handleNotification(_ notification: Notification) {
print("შეტყობინება მიღებულია!")
if let userInfo = notification.userInfo {
print("მომხმარებლის ინფორმაცია: \(userInfo)")
}
}
deinit {
// გამოწერის გაუქმება
NotificationCenter.default.removeObserver(self)
}
}
// გამოყენება
let publisher = Publisher()
let observer = Observer()
publisher.publishNotification()