Swift中线程的奇怪问题[重复]

问题描述 投票:-2回答:1

我正在尝试以编程方式创建UIPickerView,为此我做了:

var pickerView = UIPickerView()

override func viewDidLoad() {
    super.viewDidLoad()

    self.pickerView.delegate = self
    self.pickerView.dataSource = self
}

但根据线程,我得到了非常烦人的错误:

Main Thread Checker: UI API called on a background thread: -[UIPickerView init]
PID: 70649, TID: 6408323, Thread name: (none), 
Queue name: NSOperationQueue 0x60000023ba20 (QOS: UNSPECIFIED), QoS: 0

它真的很奇怪,因为它之前有效,它现在开始出现了!

我试着改变它:

var pickerView: UIPickerView!

override func viewDidLoad() {
    super.viewDidLoad()

    Dispatch.main.async {
      self.pickerView = UIPickerView()
      self.pickerView.delegate = self
      self.pickerView.dataSource = self
    }
}

但我又崩溃了另一个错误日志是:

Assertion failure in void _UIPerformResizeOfTextViewForTextContainer(NSLayoutManager *, UIView<NSTextContainerView> *, NSTextContainer *, NSUInteger)(), /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIFoundation_Sim/UIFoundation-546.4/UIFoundation/TextSystem/NSLayoutManager_Private.m:1619

我花了我的第二个小时,并没有意识到这里有什么问题。有人能帮我理解吗?

ios swift multithreading
1个回答
1
投票

问题在于,不是在您显示的任何代码中(在视图控制器内),而是在驱动视图控制器的代码中。视图控制器是如何形成的?例如,如果是因为你调用performSegue,你需要确保在主线程上调用performSegue

© www.soinside.com 2019 - 2024. All rights reserved.