Swift 3の現在のスレッドを確認するにはどうすればよいですか?
以前のバージョンのSwiftでは、次のようにして現在のスレッドがメインスレッドであるかどうかを確認することができました。
NSThread.isMainThread()
Swift 3の現在のスレッドを確認するにはどうすればよいですか?
以前のバージョンのSwiftでは、次のようにして現在のスレッドがメインスレッドであるかどうかを確認することができました。
NSThread.isMainThread()
回答:
それは単にThread.isMainThread
Swift 3にあるように見えます。
スレッドとキューを出力する拡張機能を作成しました。
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以降:
Thread.isMainThread
戻ってBool
、ユーザは、メインスレッド上にあるか、そうでない場合は、ケースには、誰かが参考になるこの拡張機能をスレッド/キューの名前を印刷したい場合は、その旨
extension Thread {
var threadName: String {
if let currentOperationQueue = OperationQueue.current?.name {
return "OperationQueue: \(currentOperationQueue)"
} else if let underlyingDispatchQueue = OperationQueue.current?.underlyingQueue?.label {
return "DispatchQueue: \(underlyingDispatchQueue)"
} else {
let name = __dispatch_queue_get_label(nil)
return String(cString: name, encoding: .utf8) ?? Thread.current.description
}
}
}
使い方:
print(Thread.current.threadName)
最新のSwift 4.0〜4.2では、 Thread.current
現在の実行スレッドを表すスレッドオブジェクトを返すを参照してください。