gpt4 book ai didi

ios - 如何在 Swift 中初始化对象时将 self 传递给初始化器?

转载 作者:行者123 更新时间:2023-11-30 12:23:50 34 4
gpt4 key购买 nike

我有以下代码:

import CoreBluetooth

class BrowserSample: NSObject, CBCentralManagerDelegate {
let central : CBCentralManager

init() {
central = CBCentralManager(delegate: self, queue: nil, options: nil)
super.init()
}

func centralManagerDidUpdateState(central: CBCentralManager!) { }
}

如果我将 central = 行放在 super.init() 之前,则会收到错误:

self used before super.init() call

如果我把它放在后面,我会收到错误:

Property self.central not initialized at super.init call

所以,我很困惑。我该怎么做?

最佳答案

解决方法是使用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!) { }
}

或者你可以尝试@lazy

class BrowserSample: NSObject, CBCentralManagerDelegate {
@lazy var central : CBCentralManager = CBCentralManager(delegate: self, queue: nil, options: nil)

init() {
super.init()
}

func centralManagerDidUpdateState(central: CBCentralManager!) { }
}

关于ios - 如何在 Swift 中初始化对象时将 self 传递给初始化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44460340/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com