NSOperation和NSOperationQueue
NSOperation和NSOperationQueue NSOperation和NSOperationQueue NSOperation 是 GCD 的封裝,是完全的物件導向類別,所以使用起來更簡單。 大家可以看到 NSOperation 和 NSOperationQueue 分别對照 GCD 的 Task 和 Queue 。 將要執行的任務封装到一個 NSOperation 物件中。 將此task添加到 NSOperationQueue 物件中。 然後系統就會自動執行任務。至於是同步還是異步、串行還是並行繼續往下看: 加入Task NSOperation 只是一個抽象類別。 抽象類別是不能產生實體的類別,所以不能封裝task。 但有 2 個子類別是可以用封裝任務。 分别是:NSInvocationOperation 和 NSBlockOperation 。 建立一個 Operation 後,需要使用 start 方法啟用task,他會在當前的序列進行同步執行。而且也可以取消任務,只需要使用 cancel 方法即可。 NSInvocationOperation : 需要傳入一個方法。 OBJECTIVE-C //1.建立NSInvocationOperation物件 NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget: self selector :@ selector (run) object: nil ]; //2.開始執行 [operation start]; //SWIFT 在 Swift ,蘋果認為 NSInvocationOperation 這種不是安全的類別。 As of Xcode 6.1, NSInvocation is disabled in Swift, therefore, NSInvocationOperation is disabled too. See this thread in Developer Forum Because it’s not type-safe or ARC-safe. Even