分配给@NSManaged public var locks UI
Posted
技术标签:
【中文标题】分配给@NSManaged public var locks UI【英文标题】:Assigning to @NSManaged public var locks UI 【发布时间】: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” - 是性能下降还是死锁? 【参考方案1】:提供的代码不可测试,但请尝试以下操作
func finish()
DispatchQueue.main.async
self.status = TaskSessionStatus.complete
【讨论】:
以上是关于分配给@NSManaged public var locks UI的主要内容,如果未能解决你的问题,请参考以下文章
为啥直接将 Arrays.asList() 分配给 var 时会出现 AssertionError?
当我调用 JsonConvert.DeserializeObject() 时,为啥将 JArray 分配给 var 失败?