Как проверить текущий поток в Swift 3?


Как проверить, какой из них является текущим потоком в Swift 3?

в предыдущих версиях Swift можно было проверить, является ли текущий поток основным, сделав это:

NSThread.isMainThread()
4 61

4 ответа:

похоже, что это просто Thread.isMainThread в Swift 3.

Thread.isMainThread вернет логическое значение, указывающее, находитесь ли вы в данный момент в основном потоке пользовательского интерфейса. Но это не даст вам текущий поток. Он только скажет вам, находитесь ли вы на главном или нет.

Thread.current вернет текущий поток, на котором вы находитесь.

Я сделал расширение для печати потока и очереди:

extension Thread {
    class func printCurrent() {
        print("\r⚡️: \(Thread.current)\r" + ": \(OperationQueue.current?.underlyingQueue?.label ?? "None")\r")
    }
}

Thread.printCurrent()

результат будет такой:

⚡️: <NSThread: 0x604000074380>{number = 1, name = main}
: com.apple.main-thread

в последнем Swift 4.0 ~ 4.2, мы можем использовать Thread.current

посмотреть возвращает объект thread, представляющий текущий поток выполнения