मैं स्विफ्ट का उपयोग कर एक आईओएस ऐप बना रहा हूं।स्मृति रिसाव के बिना समापन ब्लॉक में कॉल ऑपरेशन
मान लें कि मैं एक सरणी को एक अलग थ्रेड में मुख्य थ्रेड में सॉर्ट करना चाहता हूं। मुझे लगता है कि जैसे 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.completionBlock में operation.array फोन, आपरेशन कभी नहीं होगा जारी किया जा सकता है, मैं समापन ब्लॉक (या अन्यत्र) में क्रमबद्ध सरणी कैसे प्राप्त कर सकता हूं?
मैं एक रास्ता देख सकता हूं। यह केवल ऑब्जेक्ट के रूप में सरणी के साथ ऑब्जेक्ट बनाना है और इस ऑब्जेक्ट को ऑपरेशन में पास करना है, फिर मैं ऑब्जेक्ट के भीतर सरणी को पुनर्प्राप्त करने में सक्षम हूं लेकिन निश्चित रूप से यह एक बेहतर तरीका मौजूद है।
धन्यवाद