我是一个非常新的使用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()
答案 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互操作性