Мне нужно поделиться текущим местоположением пользователя во всем приложении, и первоначально я создал для этого синглтон (обновленный диспетчером местоположений, доступный из любого места):
final class CurrentLocation {
static let shared = CurrentLocation()
var coordinates: CLLocationCoordinate2D?
private init() {}
}
if let currentLocation = CurrentLocation.shared.coordinates {
//
}
Затем я решил расширить UIDevice
для достижения того же эффекта без синглтона (обновляется менеджером локаций и доступен везде):
extension UIDevice {
static var coordinates: CLLocationCoordinate2D?
}
if let currentLocation = UIDevice.coordinates {
//
}
В практическом смысле, есть ли разница?Синглтоны обычно выглядят как замаскированные глобалы, но разве это не расширение, когда это используется, то же самое?