Ana*_*Ana 11 ios core-bluetooth swift
我有以下代码:
import CoreBluetooth
class BrowserSample: NSObject, CBCentralManagerDelegate {
let central : CBCentralManager
init() {
central = CBCentralManager(delegate: self, queue: nil, options: nil)
super.init()
}
func centralManagerDidUpdateState(central: CBCentralManager!) { }
}
Run Code Online (Sandbox Code Playgroud)
如果我central =之前把线放super.init(),那我得到错误:
self used before super.init() call
Run Code Online (Sandbox Code Playgroud)
如果我把它放在后面,我得到错误:
Property self.central not initialized at super.init call
Run Code Online (Sandbox Code Playgroud)
所以,我很困惑.我该怎么做呢?
Bry*_*hen 20
一种解决方法是使用ImplicitlyUnwrappedOptional这样central与初始化nil第一
class BrowserSample: NSObject, CBCentralManagerDelegate {
var central : CBCentralManager!
init() {
super.init()
central = CBCentralManager(delegate: self, queue: nil, options: nil)
}
func centralManagerDidUpdateState(central: CBCentralManager!) { }
}
Run Code Online (Sandbox Code Playgroud)
或者你可以试试 @lazy
class BrowserSample: NSObject, CBCentralManagerDelegate {
@lazy var central : CBCentralManager = CBCentralManager(delegate: self, queue: nil, options: nil)
init() {
super.init()
}
func centralManagerDidUpdateState(central: CBCentralManager!) { }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5229 次 |
| 最近记录: |