【发布时间】:2014-08-11 13:31:21
【问题描述】:
我有点困惑,为什么我的 NSThread 由于运行时错误而无法使用选择器实例化
target does not implement selector (*** -[FileSearcher processFilesAsync:])
函数是这样定义的
func processFilesAsync(#data: [String])
NSThread 会以这种方式创建:
NSThread(target: self, selector: "processFilesAsync:", object: itemsPerThread[i])
"itemsPerThread" 只是一个以字符串数组为值的字典。
据我所知,这应该可以工作,因为我要调用的方法定义了一个参数,并且我传递给 NSThread 的 init() 方法的选择器表明目标方法只需要一个参数。
我已经尝试过使用 Swift 的“选择器”类型而不是仅使用字符串,但这并不奏效。我还尝试将方法的类型从“[String]”更改为“AnyObject”,这也不起作用。
有人知道可能出了什么问题吗?
以上所有代码都在同一个类中。
我正在使用 Xcode 6 Beta 5。
编辑 我发现这与参数有关。我实现了一个没有参数的虚拟方法,并尝试将其设置为目标并且它有效。一旦我修改它以使用参数 -> 与上面相同。
【问题讨论】:
-
您有什么理由尝试使用 NSThread 而不是 GCD 吗?
-
我试过 GCD。由于可能要处理数十万个文件,我想尝试另一种方法:并行处理它们。