在 PDF 中搜索会过多增加应用程序的内存使用量

2024-01-30

我注意到,当我在大型 PDF 中搜索时,应用程序的内存使用量会增加,因为 PDFKit 正在执行一些内部搜索缓存。有什么办法可以控制这个缓存大小吗?就我而言,搜索完成后缓存内存会增加超过 500 MB。

为了在 PDF 文档中进行搜索,我使用了:

func beginFindString(_ string: String, withOptions options: NSString.CompareOptions = [])


感谢您的意见。要求是在客户端的 PDF 中进行搜索。就我而言,PDF 大约有 300 页,其中还包含图像。 搜索完成后,内存使用量并没有下降一点,直到 PDFDocument 被释放为止。当包含 PDFView 的屏幕被关闭时,通常会发生这种情况。我认为这是 PDFKit 在搜索时对页面建立索引所做的某种优化。

我找到了一种解决方法,可以在不增加太多应用程序内存使用量的情况下工作。 我的解决方案是实例化一个新的PDFDocument反对每个x页。我解析了范围内每个页面的文本nx ..< (n+1)x并搜索关键字。通过在每个范围实例化一个新的 PDFDocument 对象,先前的对象被释放,索引页面也被释放。此外,每个页面的文本字符串都可以被缓存,这比搜索时 PDFKit 内部文档索引需要更少的内存。如果页面被缓存,接下来的搜索几乎立即执行。

该解决方案具有良好的性能结果。它还具有了解当前搜索进度的优点。这是因为您拥有当前范围的信息以及完成搜索所需的范围总数。此外,该解决方案还可以通过在单独的线程中执行每个范围内的搜索来并行化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PDF 中搜索会过多增加应用程序的内存使用量 的相关文章

  • 有什么方法可以限制核心数据中的重复条目吗?

    我一直在尝试在核心数据中添加对象 所以 我希望它不应该允许核心数据存储中出现重复的条目 怎么做 这是我与保存数据相关的代码 IBAction save id sender if name text isEqualToString addre
  • 从 HealthKit 获取昨天的步数

    我正在构建一个供个人使用的应用程序 目前我正致力于如何从 healthkit 中准确获取昨天的步数 然后从那里将其放入变量中 我知道应该很容易 我有一个 HealthKitManager 类 它从视图内部调用该函数 然后将其附加到同一视图中
  • 某些网站如何在 iOS Safari 中内嵌播放视频?

    非常令人难以置信 因为我认为所有视频都可以在常规野生动物园中扩展为全屏播放 例如检查一下 https entertainment theonion com the onion reviews rogue one 1819596116 htt
  • 如何只允许从我的 iOS 应用程序访问我的 MySQL 数据库? (使用webapp作为数据库的网关)

    我的 iOS 应用程序需要连接到 mysql 服务器 为了实现这一目标 我想创建一个 Web 应用程序 充当客户端应用程序和服务器端数据库之间的中间人 我担心的是 有人可以简单地找出我的应用程序使用的 URL 并传递他们自己的 URL 参数
  • 如何以编程方式伪造 UIButton 的触摸事件?

    我正在编写一些单元测试 并且由于这个特定应用程序的性质 重要的是我要达到尽可能高的水平UI链尽可能 因此 我想做的是以编程方式触发按钮按下 就好像用户按下了按钮一样GUI 是的 是的 我could只需致电IBAction选择器 但同样 这个
  • 为什么我的唯一设备 ID 发生了变化?

    我已经使用以下方法大约一个月了 没有任何问题 即使卸载应用程序后 设备 ID 仍保持不变 最近我注意到我的设备 ID 发生了变化 我最近在 Xcode6 上做了很多应用程序的构建 这可能是一个原因吗 我希望我确切地知道它什么时候发生变化 这
  • 检查包含 URL 的字符串“http://”

    我正在尝试检查用户输入的 URL 但我正在与一些错误和警告作斗争 BOOL textFieldShouldReturn UITextField textField check http NSString check textField te
  • 使用 arrayWithCapacity 有什么好处

    arrayWithCapacity是一个定义在NSArray h并实施于NSArray m 当我查看代码时GNUStep https raw githubusercontent com gnustep gnustep base master
  • AVExportSession 在后台运行

    我正在开发一款需要合并多个视频的应用程序 我在用AVExportSession导出合并的视频 我还显示导出视频的进度条 大多数时候它都运行正确 当我们锁定屏幕或将应用程序置于后台模式时 就会出现此问题 这次 如果导出正在进行中 则将应用程序
  • 哪里可以找到关于 swift Alert (UIAlertController) 的明确解释?

    对此找不到清晰且信息丰富的解释 在某个主题上搜索了一段时间后 我没有 找到清晰的解释 即使在它的类参考中UIAlertController 参考 https developer apple com library ios documenta
  • 如何获得包含大量图像(50-200)的快速 UICollectionView?

    我在用着UICollectionView在一个显示大量照片 50 200 的应用程序中 我在让它变得活泼 例如像照片应用程序一样活泼 时遇到问题 我有一个习惯UICollectionViewCell with a UIImageView因为
  • 如何检测和处理UIWebView中的HTTP错误代码?

    我想在收到 HTTP 错误 404 等时通知用户 我怎样才能检测到这一点 我已经尝试过实施 void webView UIWebView webView didFailLoadWithError NSError error 但当我收到 40
  • 快速 Firebase 在异步任务中返回

    我在 swift 2 中遇到了适用于 iOS 的 Firebase SDK 的问题 我正在尝试将图片设置为从 Firebase 存储下载 当我调用该函数时 它返回 nil 我认为这是因为 Firebase sdk 提供的下载任务是异步的 因
  • iOS表单键盘不消失

    我知道我必须打电话 BOOL disablesAutomaticKeyboardDismissal return NO this dismiss keyboard on ios BOOL textViewShouldBeginEditing
  • iOS:AVPlayer 视频预加载

    我正在使用 AVPlayer 来播放视频 它们的长度很短 2 5秒 它们以随机顺序播放 问题是 当更改视频并开始播放新视频时 设备会滞后很短的时间 但我不希望更改流畅 有没有办法用 AVPlayer 预加载视频 尝试使用AVQueuePla
  • Google Analytics Pod 安装了太多依赖项

    我刚刚添加了 Google Analytics Pod 如中所述他们的 iOS 开发者指南 https developers google com analytics devguides collection ios v3 with pod
  • 如何使用最新的 FBSDK 在 iOS 应用程序中集成 Facebook,而不重定向 Safari 浏览器

    您好 我正在搜索避免新的 facebooksdk 重定向到 safari 的答案 如何在应用程序内打开 facebook 登录视图 如果它重定向到 safari 可能会在应用程序商店中拒绝 帮助我 提前致谢 昨天我使用以下方式提交我的应用程
  • 在 Swift 中上传带有其他参数的多张图片

    现在 我通过下面给出的代码仅将一张图像上传到服务器端脚本上的服务器 现在我有一个数组UIImage 我想知道如何使用UIImageJPEGRepresentation myImageView image 0 1 将所有图像发布到UIImag
  • 从 NSArray 为 UITableView 创建索引

    我读过创建索引 uitableview 旁边的 a z 的最佳方法是设置一个 nsdictionaries 数组 其中每个字典对应一个部分 并且 rowValue 键包含一个行数组 NSDictionary headerTitle gt A
  • 为什么 NSOrderedSet 不继承 NSSet?

    当然 有序集是集合的更具体的情况 那么为什么NSOrderedSet继承自NSObject而不是NSSet 我通过了界面NSSet你是对的 有序集似乎满足里氏替换原则 http en wikipedia org wiki Liskov su

随机推荐