如何解决" target没有实现选择器"使用NSThread产生线程时出现此异常?

时间:2015-12-08 03:39:55

标签: ios multithreading swift

我是一个非常新的使用NSThread来产生线程。在我的实践中,我想生成一个线程来执行一个在CreateThread类中打印String的方法。但是当我运行我的程序时," target没有实现选择器"异常显示在控制台中。我该怎么做才能解决这个问题?谢谢你的回答。

以下代码:

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()

1 个答案:

答案 0 :(得分:1)

问题是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互操作性