我是使用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互操作性的更多信息