【发布时间】:2014-11-23 17:01:11
【问题描述】:
今天我在尝试“概括”我的“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>,它将正常工作。
这怎么可能? 我在这里遗漏了什么吗?
【问题讨论】:
标签: generics swift nsoperation nsoperationqueue