一尘不染

在Swift中重新初始化一个懒惰的初始化变量

swift

我有一个初始化为的变量:

lazy var aClient:Clinet = {
    var _aClient = Clinet(ClinetSession.shared())
    _aClient.delegate = self
    return _aClient
}()

问题是,在某个时候,我需要重置此aClient变量,以便在ClinetSession.shared()更改后可以再次初始化。但是如果我将类设置为可选的话Clinet?,LLVM在尝试将它设置为时会给我一个错误nil。如果我只是使用将其重置在代码中的某个位置aClient = Clinet(ClinetSession.shared()),它将最终显示为EXEC_BAD_ACCESS

有没有一种方法可以使用lazy并允许自己重置?


阅读 276

收藏
2020-07-07

共1个答案

一尘不染

懒惰是明确的仅一次初始化。您要采用的模型可能只是按需初始化模型:

var aClient:Client {
    if(_aClient == nil) {
        _aClient = Client(ClientSession.shared())
    }
    return _aClient!
}

var _aClient:Client?

现在,只要_aClientnil,它会被初始化并返回。可以通过设置重新初始化_aClient = nil

2020-07-07