Каковы хорошие способы инициализации экземпляра CBCentralManager, который требует делегата и часто указывает на собственный класс?Как инициализировать CBCentralManager в Swift, когда необходима самостоятельная ссылка
Я могу объявить свойство как неявно развернутое необязательное, но это делается, поскольку общая практика кажется скорее не похожей на Swift, а не очень безопасной.
В качестве альтернативы, я могу объявить свойство как необязательное. Но так как инициализаторы CBCentralManager не объявлены как неустойчивые, кажется, нет смысла объявлять экземпляр как таковой.
Косвенно развернутого Дополнительно:
class MyUnwrappedOptional: NSObject, CBCentralManagerDelegate {
var centralManager: CBCentralManager!
func init() {
super.init()
centralManager = CBCentralManager(delegate: self, queue: nil, options:nil)
// Subsequent usages of centralManager in other methods of this class don't require additional unwrapping.
centralManager.scanForPeripheralsWithServices(services, options: nil)
}
}
Использование Факультативный:
class MyOptionalClass: NSObject, CBCentralManagerDelegate {
var centralManager: CBCentralManager?
func init() {
super.init()
centralManager = CBCentralManager(delegate: self, queue: nil, options:nil)
// Subsequent usages of centralManager in other methods of this class require optional checks:
if let central = centralManager {
central.scanForPeripheralsWithServices(services, options: nil)
}
// :: or ::
central!.scanForPeripheralsWithServices(services, options: nil)
}
}
Является либо из них более предпочтительным или есть другой способ достижения этой цели?