Xcode的主线程检查器正在抱怨主线程中的内容

时间:2018-04-19 18:05:21

标签: swift xcode multithreading grand-central-dispatch dispatch-async

我有一个名为UILabelPadding的UILabel的子类:

class UILabelPadding: UILabel {

let padding = UIEdgeInsets(top: 4, left: 3, bottom: 4, right: 3)
override func drawText(in rect: CGRect) {
    super.drawText(in: UIEdgeInsetsInsetRect(rect, padding))
}

override var intrinsicContentSize : CGSize {
    let superContentSize = super.intrinsicContentSize
    let width = superContentSize.width + padding.left + padding.right
    let heigth = superContentSize.height + padding.top + padding.bottom
    return CGSize(width: width, height: heigth)
}

}

有时当我在iPhone 6s上运行我的应用程序时,主线程检查程序会停止我的程序,并指向我在主类中声明的UILabelPadding变量的紫色警告。

var activityTextStatus = UILabelPadding()

我收到警告:

  1. - [UILabel initWithFrame:]必须仅在主线程中使用
  2. - [UIView init]必须仅从主线程
  3. 使用

    所以在我使用activityTextStatus的任何地方,我把它放在" DispatchQueue.main.async"中,但我仍然得到后台线程警告中调用的紫色UI API。主线程检查器有点错吗?我不想把它关掉,以防它让我知道任何其他问题,但我希望我可以忽略这个问题,或解决它,如果它实际上是一个问题问题。

0 个答案:

没有答案