【发布时间】:2021-08-31 03:06:17
【问题描述】:
我正在使用一个相当简单的“Toast”类,但设置了初始化程序 需要主线程 - 我想将主线程代码驱逐到类 - 这可能吗?
不强制到主线程时的当前错误:
我尝试了一些不同的方法,显然用 dispatchQueue.main.async 换行是不可能的。
我项目中的初始化代码:
作为文本:
DispatchQueue.main.async {
let toast = ToastView(
title: "Pas de nouvelles données",
titleFont: .systemFont(ofSize: 14, weight: .regular),
onTap: { print("Tapped!") }
)
toast.show()
}
toast 代码的 GitHub 存储库: https://github.com/PhilippeWeidmann/NotificationToast
有人对我应该如何处理这个问题有任何指示吗?提前致谢。
【问题讨论】:
-
请将代码发布为文本而不是图像。另外,你是从后台线程初始化对象吗?您需要显示更清晰的代码。
-
只需将 tost.show() 函数放在主线程上即可。
-
谢谢...在我的项目中有效,但我不想把它放在我的代码中的主线程中,我想修改 Toast 类来处理主线程部分的事情......这有意义吗?谢谢:)
-
没有。修改库没有意义。
-
同意 Raja,你应该把主线程放在你的代码上。如果你想修改 Toast 库,可能只需创建一个 fork 并将 pod 指向正确的 git 源。
标签: swift class grand-central-dispatch toast initializer