Я создаю приложение iOS с помощью быстрого доступа.Операция вызова в блоке завершения без утечки памяти
Предположим, я хочу отсортировать массив в другом потоке, который является основным потоком. Я могу подкласс NSOperation так:
import UIKit
class Operation: NSOperation {
var array:[Int]
init(array:[Int]){
self.array=array
println("Operation init")
}
deinit{
println("Operation deinit")
}
override func main() {
for i in 0..<array.count{
for j in 0..<array.count{
if array[i]<array[j]{
let k = array[i]
array[i] = array[j]
array[j] = k
}
}
}
}
}
В моей ViewController, я могу использовать что-то вроде:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let array = [6,5,4,3,2,1]
let operation = Operation(array: array)
let operationQueue = NSOperationQueue()
operationQueue.addOperation(operation)
operation.completionBlock = {
println("done")
}
}
}
Мой вопрос: так как если я позвоню operation.array в operation.completionBlock, операция никогда не будет Как я могу получить отсортированный массив в блоке завершения (или в другом месте)?
Я вижу путь. Это создать объект с только как свойство array и передать этот объект в Operation, тогда я смогу получить массив внутри объекта, но, несомненно, он существует лучше.
Спасибо