簡體   English   中英

MKMapSnapshotter WatchKit內存錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM