在swift中创build线程?

我正试图迅速产生一个线程。 所以我有这条线:

。 。 。

let thread = NSThread(target: self, selector: doSomething(), object: nil) 

。 。 。

doSomething是该类范围内的一个函数。

该行出现此错误:“找不到接受提供的参数的init()的重载”

我在这里错过了什么? 何可以快速创build一个新的线程?

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

 let thread = NSThread(target:self, selector:#selector(doSomething), object:nil) 

NSThread将select器作为第二个参数。 你可以像下面这样描述Objective-Cselect器作为Swift中的string:

 let thread = NSThread(target: myObj, selector: "mySelector", object: nil) 

尽pipeSwift函数并不等价于objective-c方法。 如果你有一个Swift类中的方法,如果你在类中使用@objc属性,你可以使用它作为select器:

 @objc class myClass{ func myFunc(){ } } var myObj = myClass() let thread = NSThread(target: myObj, selector: "myFunc", object: nil) 
  1. 当我们在目标上调用select器时,我们应该检查目标是否存在,并响应select器。 只有从NSObject或其子类扩展的类才可以使用respondsToSelector:

  2. 如果您有两个以上的参数,可以使用NSDictionary存储参数。

    例如:

     //this code is in Objective-C but the same code should exist in Swift NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:object1, @"key1", object2, @"key2",nil]; 

然后将“params”传递给select器的参数: