【发布时间】:2020-07-22 21:16:47
【问题描述】:
我的 CoreData 模型上有一个 Int16 状态属性,在生成的文件中定义为 @NSManaged public var state: Int16。
我通过枚举的 rawValue 分配给它,如下所示:
/// TaskSession.swift
public enum TaskStatus: Int16, CaseIterable {
case paused
case running
case complete
case suspended
}
public var status: TaskStatus {
get {
TaskStatus.init(rawValue: self.state) ?? .paused
}
set(newValue) {
state = newValue.rawValue
}
}
func finish() {
self.status = TaskSessionStatus.complete
}
///Tasks.swift
...
for session in taskSessionsArray where session.status != .complete {
session.finish()
}
...
我尝试过直接分配给 state 属性,但同样的事情发生了 - 分配给 state 会阻塞 UI 一百毫秒左右,随着任务集合变得越来越大,这种情况会变得更糟。
【问题讨论】:
-
确保您仅在 UI 线程上分配,并在后台执行所有其他任务。
-
“锁定 UI” - 是性能下降还是死锁?