[英]MKMapSnapshotter WatchKit memory error
在連接到Apple Watch的真實iPhone上測試“ Watch Application” / iOS應用程序手表擴展時,MKSnapshotter存在一些重大問題!
在我的一個接口控制器中,我調用以下函數:
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。 創建映像后,即使我將options設置為nil且snapshotter設置為nil,我的內存也會從3 MB跳到20 MB並停留在那里。 另外,我還會在控制台上打印以下消息:
WatchKit Extension [9548:2529231] BSXPCMessage收到錯誤消息:連接中斷
但是最糟糕的是:一旦我想創建另一個快照,由於內存錯誤,我的Watch App崩潰了! 我認為發生這種情況是因為快照程序在分配內存后不會釋放內存...我該如何手動執行操作,或者有人有其他想法?
它與getEndRegion()函數無關! 我還使用不帶選項的默認快照器進行了測試->結果相同!
如果我在模擬器中測試該應用程序,則一切正常!
更新:
我搜索了MKMapSnapshotter的文檔,並說,它只能在應用程序處於前台的情況下提供快照,因此無法從主應用程序進行渲染,並且分配給iOS手表擴展的內存太低,因此還有其他辦法嗎?
與手機上運行的擴展程序相比,模擬器可以訪問更多的內存。 我建議使用openParentApplication:reply:
對您的iPhone應用程序openParentApplication:reply:
一個請求,並在那里進行工作。
第二個問題:為什么要自己生成地圖圖像? WKInterfaceMap
實際上是在Watch上為您完成的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.