当测试我的“手表应用程序”/ iOS应用程序手表扩展到一个连接到Apple的真正iPhone上时,我在iPhone上遇到了一些重大问题!
在我的一个接口控制器中,我调用以下函数:
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)
}
}
}这将创建地图的图像并将其填充到我的WKInterfaceImage中。一旦我创建了图像,我的内存就从大约3 MB跃升到20 MB,即使我设置了选项=零和快照=零,内存也会停留在那里。此外,我还在控制台上打印了以下消息:
WatchKit Extension9548:2529231 BSXPCMessage收到消息错误:连接中断
但是最糟糕的是:一旦我想要创建另一个快照,我的Watch应用程序就会因为内存错误而崩溃!我认为这是因为快照在分配内存后不会释放内存.我怎么能手动做到这一点,或者有人有其他的想法?
它与getEndRegion()函数无关!我还用默认的快照测试了它,没有选项,->,同样的结果!
如果我在模拟器里测试这个应用程序,一切都很好!
更新:
我搜索了MKMapSnapshotter的文档,它说,只有当应用程序位于前台时,它才能提供快照,因此不能从主应用程序中呈现快照,而分配给iOS手表扩展的内存太低,那么还有其他方法吗?
发布于 2015-04-29 09:52:05
模拟器可以访问比在您手机上运行的扩展程序可用的内存多得多的内存。我建议使用iPhone启动一个openParentApplication:reply:应用程序的请求,并在那里完成工作。
次要问题:为什么要自己生成地图的图像?WKInterfaceMap实际上是在监视您。
https://stackoverflow.com/questions/29938216
复制相似问题