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
사용자가 Main Thread에 있거나 Not에있는 경우 누군가가 대기열 / 스레드의 이름을 인쇄하려는 경우이 확장이 도움이 될 것이라는 내용을 반환합니다 .
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