Comment puis-je vérifier lequel est le fil actuel dans Swift 3 ?
Dans les versions précédentes de Swift, il était possible de vérifier si le thread en cours était le principal en procédant ainsi :
NSThread.isMainThread()
Comment puis-je vérifier lequel est le fil actuel dans Swift 3 ?
Dans les versions précédentes de Swift, il était possible de vérifier si le thread en cours était le principal en procédant ainsi :
NSThread.isMainThread()
Thread.isMainThread
renvoie un booléen indiquant si vous êtes actuellement sur le thread principal de l'interface utilisateur. Mais cela ne vous donnera pas le thread actuel. Il vous dira seulement si vous êtes sur le thread principal ou non.
Thread.current
renverra le fil de discussion actuel sur lequel vous vous trouvez.
J'ai fait une extension pour imprimer le fil et la file d'attente :
extension Thread {
class func printCurrent() {
print("\r: \(Thread.current)\r" + ": \(OperationQueue.current?.underlyingQueue?.label ?? "None")\r")
}
}
Thread.printCurrent()
Le résultat serait :
: <NSThread: 0x604000074380>{number = 1, name = main}
: com.apple.main-thread
Swift 4 et plus :
Thread.isMainThread
renvoie à Bool
indiquant que si l'utilisateur est sur le fil principal ou non, dans le cas où quelqu'un veut imprimer le nom de la file d'attente / fil, cette extension sera utile.
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
}
}
}
Comment l'utiliser :
print(Thread.current.threadName)
Dans les dernières versions de Swift 4.0 ~ 4.2, nous pouvons utiliser Thread.current
Ver Renvoie l'objet thread représentant le thread d'exécution actuel
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.