在swift中创建线程?

zum*_*zum 8 nsthread ios swift

我试图在swift中生成一个线程.所以我有这条线:

...

let thread = NSThread(target: self, selector: doSomething(), object: nil)
Run Code Online (Sandbox Code Playgroud)

...

doSomething是类的范围内的函数.

该行给出了这个错误:"找不到接受提供的参数的init()的重载"

我在这里错过了什么?我可以在swift中创建一个新线程吗?

rob*_*off 13

从Xcode 7.3和Swift 2.2开始,您可以使用#selector(...) Objective-C将使用的特殊形式@selector(...):

let thread = NSThread(target:self, selector:#selector(doSomething), object:nil)
Run Code Online (Sandbox Code Playgroud)

  • 如果选择器接受参数,那么它必须以冒号结束.示例:`NSThread(target:self,selector:"doSomethingWithObject:",object:someObject)` (4认同)
  • 不,默认情况下,类不会从`NSObject`继承.如果你在Cocoa Touch框架中创建任何子类,它将间接地继承`NSObject`.否则,在Swift中,你需要显式继承`NSObject`,或声明你的类`@objc`,以便与`NSThread`一起使用它. (2认同)