gel*_*zzz 2 nsthread ios swift
我试图在swift中创建一个线程并发送两个参数.我创建线程和这项工作:
let thread = NSThread(target:self, selector:"getData", object:nil)
thread.start()
Run Code Online (Sandbox Code Playgroud)
但是如何将参数发送到我的func getData?如何使用如下参数创建对象:
let params =...
let thread = NSThread(target:self, selector:"getData", object:params)
thread.start()
...
getData(username: String, password: String) {
...
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*e S 10
您应该使用Grand Central Dispatch而不是直接使用线程.在这种情况下,您希望dispatch_async用于调用getData后台队列:
let username = ...
let password = ...
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue) {
getData(username, password);
}
Run Code Online (Sandbox Code Playgroud)
请记住,如果getData实际上return是数据,那么你将不得不处理内部dispatch_async的闭包:
let username = ...
let password = ...
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue) {
let someData = getData(username, password)
/* do something with someData */
}
/* !! someData is NOT available here !! */
Run Code Online (Sandbox Code Playgroud)
如果您打算在iOS上进行多线程/并发编程,我强烈建议您查看Apple的并发编程指南.
| 归档时间: |
|
| 查看次数: |
14669 次 |
| 最近记录: |