gpt4 book ai didi

ios - MKMapSnapshotter WatchKit 内存错误

转载 作者:行者123 更新时间:2023-12-01 16:33:53 28 4
gpt4 key购买 nike

在连接到 Apple Watch 的真实 iPhone 上测试我的“ watch 应用程序”/iOS 应用程序 watch 扩展时,我遇到了 MKSnapshotter 的一些重大问题!

在我的一个接口(interface) Controller 中,我调用了以下函数:

  func createMapSnapshot(){
//Snapshotter for overview image
self.options = MKMapSnapshotOptions()
self.options!.region = getEndRegion()
self.snapshotter = MKMapSnapshotter(options: options!)
snapshotter!.startWithCompletionHandler() {snapshot, error in

dispatch_async(dispatch_get_main_queue()) {
var finalImage = self.drawEndRun(snapshot.image, snapshot: snapshot)

self.mapImage.setImage(finalImage)
}
}
}

这应该创建 map 图像并用它填充我的 WKInterfaceImage。
一旦我创建了图像,我的内存就会从大约 3 MB 跳到 20 MB 并保持在那里,即使我设置了 options = nil 和 snapshotter = nil。我还在控制台上打印了以下消息:

WatchKit Extension[9548:2529231] BSXPCMessage 收到错误消息:连接中断

但最糟糕的部分来了:当我想创建另一个快照时,我的 Watch App 由于内存错误而崩溃!我认为发生这种情况是因为快照程序在分配内存后不会释放内存......我该如何手动执行此操作或有人有其他想法?

它与 getEndRegion() 函数无关!我还使用没有选项的默认快照器对其进行了测试-> 相同的结果!

如果我在模拟器中测试应用程序一切正常!

更新:

我搜索了 MKMapSnapshotter 的文档,它说,如果应用程序在前台,它只能提供快照,因此无法从主应用程序呈现,并且分配给 iOS watch 扩展的内存太低,所以有没有别的办法??

最佳答案

模拟器可以访问的内存比手机上运行的扩展可用的内存要多得多。我建议使用 openParentApplication:reply: 向您的 iPhone 应用发起请求。并在那里工作。

第二个问题:为什么要自己生成 map 图像? WKInterfaceMap本质上是在 Watch 上为您执行此操作。

关于ios - MKMapSnapshotter WatchKit 内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29938216/

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