创建Pdf
我正在创建一个pdf多个图像无限的图像,但主要问题是pdfKit后写不释放内存,然后问题是应用程序崩溃后1 GB超过任何人都可以帮助我图像到pdf无限的图像。我使用递归函数来释放内存,但在我的情况下内存不释放我分享了代码kidly帮助
func createPdfRecursiveFunction(image:UIImage,imageData:[UIImage],name:String)
{
autoreleasepool(invoking: {
let pdfPage = PDFPage(image: image)!
pdfdocument.insert(pdfPage, at: ImagesCount)
if ImagesCount == (imageData.count - 1)
{
print("Write Successfully")
}else{
ImagesCount += 1
if ImagesCount == (imageData.count - 1)
{
self.getAllImage.removeAll()
self.imagedata.removeAll()
print("Write Successfully")
let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
var outputURL = documentDirectory.appendingPathComponent("PDFReader")
do {
try FileManager.default.createDirectory(at: outputURL, withIntermediateDirectories: true, attributes: nil)
outputURL = outputURL.appendingPathComponent("\(name).pdf")
}catch let error {
print(error.localizedDescription)
}
_ = autoreleasepool
{
pdfdocument.write(to: outputURL)
}
}else{
createPdfRecursiveFunction(image: imagedata[ImagesCount], imageData: imageData, name: name)
}
}})
}
1条答案
按热度按时间6uxekuva1#
问题是您正在从自动释放块本身中递归调用createPdfRecursiveFunction,这意味着在处理完所有图像之前,块不会到达末尾并耗尽。
在自动释放块结束后立即调用createPdfRecursiveFunction,或者将代码分开,以便在带有自动释放块的单独函数中完成pdf工作,例如