今天在尝试“泛化”我的“CoreData导入操作”时,遇到了一个奇怪的问题。发现如果我创建一个NSOperation的通用子类,则
简单示例:
如果您创建此类的实例并将其添加到
main()
函数将不会被调用。简单示例:
class MyOperation<T: NSObject>: NSOperation {
override func main() {
println("My operation main was called")
}
}
如果您创建此类的实例并将其添加到
operationQueue
中,则会发现其main()
实际上并未被调用。override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.operationQueue = NSOperationQueue()
let operation = MyOperation<NSString>()
self.operationQueue!.addOperation(operation)
}
操作简单地从ready
转换到executing
再到finished
状态,而不会调用main()
。
如果我从MyOperation
类中删除泛型注释<T: NSObject>
,它将正常工作。
这是如何可能的?我错过了什么吗?