我会把大文件发送到服务器.该文件将被分成块.当我调用FileHandle.readData(ofLength:)时,我收到很高的内存消耗.块的内存没有解除分配,一段时间后,我收到EOM异常和崩溃. Profiler在FileHandle.readData(ofLength:)中显示问题(见屏幕截图)
func nextChunk(then: @escaping (Data?) -> Void) {
self.previousOffset = self.fileHandle.offsetInFile
autoreleasepool {
let data = self.fileHandle.readData(ofLength: Constants.chunkLength)
if data == Constants.endOfFile {
then(nil)
} else {
then(data)
self.currentChunk += 1
}
}
}