Диагностика здесь вводит в заблуждение.Проблема в том, что вы не можете ссылаться на self
в том месте, где вы находитесь (self
это будет класс, а не экземпляр).
Есть несколько способов решить эту проблему, но общийпуть - это свойство lazy
:
lazy var manager: CBCentralManager = {
return CBCentralManager(delegate: self, queue: nil)
}()
Другой подход - это переменная !
:
var manager: CBCentralManager!
override init() {
super.init()
manager = CBCentralManager(delegate: self, queue: nil)
}
И то, и другое несколько уродливо, но они о лучшем, что мы можемделайте в Swift в настоящее время.
Помните, что подход lazy
не создаст CBCentralManager вообще, пока в первый раз на него не ссылаются, поэтому немного более распространено использование версии !
для этого конкретного случая.