я использовал assetForURL(), чтобы найти NSData изображения и использовать эти данные я найти значение md5 из NSDataкак блокировать основной поток ждать до завершения блока не более
var imageData = NSData()
self.assetsLibrary.assetForURL(url, resultBlock: {
(asset: ALAsset!) in
if asset != nil {
let assetRep: ALAssetRepresentation! = asset.defaultRepresentation()
let sizeOfRawDataInBytes: Int = Int(assetRep.size())
var rawData: NSMutableData = NSMutableData(length: sizeOfRawDataInBytes)!
var bufferPtr: UnsafeMutablePointer<Void> = rawData.mutableBytes
var bufferPtr8: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>(bufferPtr)
var error: NSError? = nil
assetRep.getBytes(bufferPtr8, fromOffset: 0, length: sizeOfRawDataInBytes, error: &error)
imageData = NSData(bytesNoCopy: bufferPtr8, length: sizeOfRawDataInBytes, freeWhenDone: false)
}
}, failureBlock: {
(error: NSError!) in
NSLog("Error!")
}
)
//want to block until completion block is finished execution
var data = imageData // give me output zero bytes
var hash = imageData.md5
делая некоторые исследования я обнаружил, что основной поток не дожидаясь завершения блока, чтобы закончить выполнение
, пожалуйста, кто-нибудь помощь, чтобы блокировать основной поток, пока мой блок завершения не выполняется
Не стоит ждать. Зачем вам это нужно? – Wain
, потому что, прежде всего, я запускаю приведенный выше код в цикле For, и он даст мне фетальную ошибку. –
. Блокирование основного потока, вероятно, является наихудшей идеей. Это заморозит ваш UI – zisoft