我是使用NSThread生成线程的新手。在我的实践中,我想产生一个线程来执行在CreateThread类中打印String的方法。但是,当我运行程序时,控制台中会显示“目标未实现选择器”异常。解决该问题应如何做?感谢您的回答。

代码如下:

import Foundation

class CreateThread {

func HelloWorld() {

    print("Hello World!")

    NSThread.detachNewThreadSelector("secondaryThreadMethod", toTarget: self, withObject: nil)

    print("Test")

}

func secondaryThreadMethod() {

    print("Hello World in Secondary Thread!")

}

}

let createThread = CreateThread()
createThread.HelloWorld()

最佳答案

问题在于NSThread api在Objective-C运行时中运行,并且您的CreateThread类是纯Swift的-默认情况下,它的方法在Objective-C世界中不可见。为了解决这个问题,您可以使您的类继承自NSObject或将secondaryThreadMethod方法标记为@objc:

// Either of following lines will fix the crash
class CreateThread : NSObject {
...
@objc func secondaryThreadMethod() {

您可以在documentation中了解有关Swift和Objective-C互操作性的更多信息

10-08 15:41