【发布时间】:2015-10-07 14:35:22
【问题描述】:
我尝试在以下代码中将 ALAsset 转换为 NSData:
let assetUrl = NSURL(string: self.filename!)
ALAssetsLibrary().assetForURL(assetUrl,
resultBlock: { asset in
let rep = asset.defaultRepresentation()
var buffer: UInt8 = UInt8()
var error: NSError?
let from: Int64 = 0
let length: Int = Int(rep.size())
var buffered = rep.getBytes(&buffer, fromOffset: from, length: length, error: &error)
let data = NSData(bytesNoCopy: &buffered, length: length, freeWhenDone: true)
self.video = data
}, // # 1
failureBlock: { error in
println("ReportPhoto::loadVideoFromAssetsLibrary() - Error while loading saved video from AssetsLibrary!")
}
)
但我在控制台中收到以下错误消息(代码中的#1):
object 0x27d02ce8: pointer being freed was not allocated
我跟踪错误中提到的对象并找到它,但我不知道是什么问题以及如何解决它!
该对象是NSData 对象内的一个属性,称为_bytes
【问题讨论】:
-
getBytes:fromOffset:length:error:返回写入的字节数。所以我认为你的意思是let data = NSData(bytesNoCopy: &buffer, length: buffered, freeWhenDone: true) -
你有机会检查答案吗?
-
抱歉耽搁了。