gpt4 book ai didi

ios - 尝试减少 for 循环 Swift 中的内存影响 (4)

转载 作者:行者123 更新时间:2023-11-28 15:10:41 25 4
gpt4 key购买 nike

我有一个 pdf 文档(大约 200 页)。我运行一个 for 循环来依次迭代所有页面,并从中抓取一些字符串并将其存储在一个数组中。

然而这会导致崩溃

Message from debugger: Terminated due to memory issue.

我试图通过从数组中删除元素来减少内存大小,但尽管数组被缩短了,但数据大小保持不变,这是怎么回事?

let document = PDFDocument(url: documentURL)
document?.delegate = self

let numberOfPages = CGFloat((document?.pageCount)!)

var pageText : String?

for page in 0...Int(numberOfPages) {

if document?.page(at: page)?.string != nil {
pageText = document?.page(at: page)?.string

var parameters: [String]?
parameters = pageText?.components(separatedBy: "Train From")

pageText = nil //pageText now stored in parameters variable so set to nil

if parameters!.count > 1 && parameters!.count < 3 {
print(MemoryLayout.size(ofValue: parameters!), ">", parameters!.count)
parameters!.removeLast() // we only need first item
print(MemoryLayout.size(ofValue: parameters!), ">>", parameters!.count)
}
}
}

打印出来的是

8 > 2

8 >> 1

所以数组正在删除一个元素,但它的大小仍然是 8?怎么样,为什么?

我需要释放我的 for 循环中的内存。

最佳答案

当您使用 MemoryLayout.size 时,您会获得该类型的内存大小。但是一个具有固定大小的结构,因此您可以看到该单元格的大小。

您应该复制单元格的计数:

print(MemoryLayout.size(ofValue: parameters!) * parameters!.count, ">", parameters!.count)
parameters!.removeLast() // we only need first item
print(MemoryLayout.size(ofValue: parameters!) * parameters!.count, ">>", parameters!.count)

关于ios - 尝试减少 for 循环 Swift 中的内存影响 (4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47695113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com