gpt4 book ai didi

initialization - init() 和dispatch_sync 的难题

转载 作者:行者123 更新时间:2023-11-30 10:23:09 25 4
gpt4 key购买 nike

在一个类中,我有以下 init() 函数:

init() {
let q = 0
dispatch_sync(queue) {
self._state = State(q)
}
}

其中 _state 是结构体 State 的实例,queue 是全局调度队列。

我使用 dispatch_sync 调用来同步可能并发访问的类实例。

我遇到了一些奇怪的问题,编译器提示在初始化之前使用 _state 变量(即在初始化之前在 block 中使用它):

main.swift:363:37: error: variable 'self._state' used before being initialized
dispatch_sync(s_sync_queue) {
^

但是,使用调度队列和 block 的唯一目的是初始化 ivar。

编译器甚至声明,代码将在不初始化变量_state的情况下返回:

main.swift:372:5: error: property 'self._state' not initialized
}
^

尽管如此,显然,由于 dispatch_sync,函数 init 无法在变量 _state 未初始化的情况下返回。

那么,我怎样才能有效地解决这个问题呢?

最佳答案

如果可以的话,一个选择是将 _state 声明为可选。(如果这样做没有坏处)

  var _state:State?

如果您将此设置为可选,则可以在 dispatch_sync 中使用它。

关于initialization - init() 和dispatch_sync 的难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874366/

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