我有一个初始化为的变量:
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。
aClient
ClinetSession.shared()
Clinet?
nil
aClient = Clinet(ClinetSession.shared())
EXEC_BAD_ACCESS
有没有一种方法可以使用lazy并允许自己重置?
lazy
懒惰是明确的仅一次初始化。您要采用的模型可能只是按需初始化模型:
var aClient:Client { if(_aClient == nil) { _aClient = Client(ClientSession.shared()) } return _aClient! } var _aClient:Client?
现在,只要_aClient是nil,它会被初始化并返回。可以通过设置重新初始化_aClient = nil
_aClient
_aClient = nil