ArcGIS运行时SDK:iOS上的Mapview崩溃

ArcGIS运行时SDK:iOS上的Mapview崩溃,ios,qt,qml,arcgis-runtime,Ios,Qt,Qml,Arcgis Runtime,我希望看看是否有人知道这个问题和任何潜在的解决办法 我正在使用适用于Qt 100.2的ArcGIS运行时SDK。问题是,如果创建了一个包含地图的地图视图,然后将其销毁,它将崩溃,并显示以下消息: QCoreApplication::sendEvent中的断言失败:无法将事件发送到其他线程拥有的对象。当前线程0x0x174329f60。“QRTImpl::LocationDisplayImpl”类型的接收器是在线程0x0x17001d940的内核/qcoreapplication文件中创建的 .c

我希望看看是否有人知道这个问题和任何潜在的解决办法

我正在使用适用于Qt 100.2的ArcGIS运行时SDK。问题是,如果创建了一个包含地图的地图视图,然后将其销毁,它将崩溃,并显示以下消息:

QCoreApplication::sendEvent中的断言失败:无法将事件发送到其他线程拥有的对象。当前线程0x0x174329f60。“QRTImpl::LocationDisplayImpl”类型的接收器是在线程0x0x17001d940的内核/qcoreapplication文件中创建的 .cpp,第563行

这在Mac或Android上不会发生。我的用例是在stackView中加载的组件中创建一个映射。当我离开该组件时,stackview会终止导致崩溃的mapview。我创建了一个空的ArcGIS qml应用程序,用一种更简单的方法来测试这个问题,方法是用一个按钮在加载程序中显示地图,然后卸载它。请参阅文章底部的一个简单示例

import QtQuick 2.6
import QtQuick.Controls 1.4
import Esri.ArcGISRuntime 100.2
ApplicationWindow {
    id: appWindow
    width: 800
    height: 600
    title: "IosMapTest"
    Rectangle {
        id: backgroundRect
        anchors.fill: parent
        color: "red"
    }
    Loader {
        id: mapLoader
        anchors.fill: parent
        // add a mapView component
        sourceComponent: MapView {
            anchors.fill: parent
            // set focus to enable keyboard navigation
            focus: true
            // add a map to the mapview
            Map {
                // add the BasemapTopographic basemap to the map
                BasemapTopographic {}
            }
        }
    }
    Button {
        anchors.bottom: parent.bottom
        anchors.right: parent.right
        text: "click here for crash"
        onClicked: mapLoader.sourceComponent = undefined
    }
}

这似乎是ArcGIS运行时中的一个bug,所以我在系统中记录了一个bug。我认为解决这个问题的唯一方法是不要每次在堆栈中导航时都创建/销毁页面。

如果不使用ArcGISRuntime导入的类型,它运行正常吗?如果是这样,您应该向开发人员提交一份bug报告。如果它仍然崩溃,用Qt提交一个bug报告。是的,它可以与其他类型一起正常运行。我将尽快向他们提交一个bug,但我希望获得更多的信息/解决方法的想法,因为我无法前进,也无法等待他们实施修复。你可以尝试自己创建StackView项目,给每个项目一个id,然后以这种方式推送,而不是推送组件或URL。这样,StackView就知道当它们从堆栈中弹出时不要销毁它们。这是一个有趣的想法。今天晚些时候我可能会试试。我目前正在尝试的是在我的main中创建一个实例。然后在加载每个新组件时重新复制到它们。你认为这是一个什么样的解决办法?它感觉脏兮兮的。任何解决办法都可能感觉脏兮兮的我不确定您正在加载什么组件,也不确定解决方法到底是什么样子的,所以很难说。对于任何好奇的人来说,我专门通过在main.qml中创建一个实例来解决这个问题,然后在加载新组件时重新租入每个组件。所以我仍然创建和销毁我的页面,但不是地图本身,它只是根据需要移动到页面上。