小编Pau*_*tin的帖子

NSPersistentCloudkitContainer 内存泄漏 -> 崩溃?(iOS 15 测试版 4、5、6 和 7...)

这是我在 Apple 论坛上创建的帖子的副本

\n

背景

\n

我在 App Store 中有一个已建立的应用程序,NSPersistentCloudKitContainer自 iOS 13 以来一直在使用,没有出现任何问题。\n我一直在运行 iOS 15 Beta 版的 iOS 设备上正常运行我的应用程序,主要是为了在用户看到问题之前发现问题.\n自从iOS 15 beta 4以来,我的应用程序就无法同步更改 - 无论更改有多小。上传“开始”但从未完成。大约一分钟后,应用程序退出到主屏幕,并且无法从崩溃报告中收集到任何有用的信息。直到现在我还不知道发生了什么事。

\n

API 中可能存在错误吗?

\n

在 iOS 15 (beta 5) 上使用 Xcode 13 (beta 5) 构建应用程序时,我已成功在模拟器和另一台设备上复制此行为。\n似乎存在NSPersistentCloudKitContainer内存泄漏并不断增加 RAM 消耗(CPU 利用率为 100%)直到操作系统终止应用程序。我的代码没有运行。\n我并不是这些方面的真正专家,我尝试使用 Instruments 来看看是否可以向我显示任何内容。它似乎与以某种方式“卡住”有关NSCloudkitMirroringDelegate,但我不知道如何处理这些信息。\n我的核心数据数据库并不小,但无论如何也不大,NSPersistentCloudKitContainer同步到 iCloud 之前没有任何问题iOS 15(beta 4)。\n如果我恢复我的应用程序数据(从外部备份文件 - 700MB,包含大量多对多、多对一关系、ckAssets 等),所有数据都会毫无问题地添加到核心数据中根本不。然后控制台日志(见下文)显示同步已创建、计划并启动...但没有上传数据。\n此时内存消耗开始,我看到的只是出现“backgroundTask\”警告(仅与 CloudKit 相关),没有运行我的代码。

\n
CoreData: CloudKit: CoreData+CloudKit: -[PFCloudKitExporter analyzeHistoryInStore:withManagedObjectContext:error:](501): <PFCloudKitExporter: 0x600000301450>: Exporting changes since (0): <NSPersistentHistoryToken - {\n …
Run Code Online (Sandbox Code Playgroud)

cloudkit nspersistentcloudkitcontainer ios15

9
推荐指数
1
解决办法
1152
查看次数

UIMarkupTextPrintFormatter 和 Mac Catalyst

我有一个 iPad 应用程序,我已经使用 Catalyst 成功地将它迁移到了 Mac。

虽然我可以在 iPad/iPhone 上使用 生成 PDF UIMarkupTextPrintFormatter,但它在 Mac 上无法正常工作。

事实上,我什至无法构建 Mac 二进制文件,除非我注释掉UIMarkupTextPrintFormatterusing #if !targetEnvironment(macCatalyst)as Xcode 只会显示一个错误:

体系结构 x86_64 的未定义符号:
“_OBJC_CLASS_$_UIMarkupTextPrintFormatter”,引用自:Functions.o ld 中的 objc-class-ref:未找到体系结构 x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v查看调用)

这令人困惑,因为 Apple 的文档表明它与 Mac Catalyst 13.0+ https://developer.apple.com/documentation/uikit/uimarkuptextprintformatter兼容

有没有其他人遇到过这种情况,您是否能够找到解决方案?

谢谢你。

编辑:我找到了一个很好的解决方案,它也可以在 macCatalyst 中运行而无需修改,基于 Sam Wize 的帖子:

https://samwize.com/2019/07/02/how-to-generate-pdf-with-images/

关键是使用 WKWebView 对象(但不显示它)作为加载 HTML 文件的中介,然后使用它的 viewPrintFormatter 通过其didFinish navigation:委托呈现 PDF

这是我的代码(希望注释是不言自明的)。使用以下代码创建一个名为 PDFCreator.swift 的 Swift 文件:

import WebKit

typealias PDFCompletion = (Result<NSData, Error>) -> Void

class …
Run Code Online (Sandbox Code Playgroud)

swift ios13 mac-catalyst

8
推荐指数
1
解决办法
728
查看次数