Hôm nay tôi đã gặp một vấn đề lạ khi tôi đang cố gắng 'tổng quát' các hoạt động nhập khẩu CoreData của tôi '. Có vẻ như nếu tôi tạo một lớp con chung của NSOperation, main()
func sẽ không được gọi.Lớp phủ NSOperation chung mất chức năng NSOperation
đơn giản ví dụ:
class MyOperation<T: NSObject>: NSOperation {
override func main() {
println("My operation main was called")
}
}
Nếu bạn tạo một thể hiện của lớp này và thêm nó vào operationQueue
bạn sẽ thấy rằng nó main()
không thực sự gọi.
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)
}
Operation đơn giản quá cảnh ready
-executing
và finished
nhà nước mà không gọi main()
.
Nếu tôi xóa chú thích chung chung <T: NSObject>
khỏi lớp MyOperation
, nó sẽ hoạt động tốt.
Làm cách nào có thể? Tôi có thiếu gì đó ở đây không?
Cảm ơn bạn đã làm rõ. Thật đáng buồn là chúng ta không thể sử dụng kỹ thuật mạnh mẽ như vậy trong Swift với Objective-C. Trong trường hợp cụ thể này, các hoạt động 'tổng quát' có thể giúp tái sử dụng khá nhiều cụm mã. À vâng. :/ – Nevs12