QML QObject在能够处理信号之前被破坏

时间:2015-06-15 16:14:37

标签: javascript c++ qt qml signals-slots

在QML中,我使用的是一个C ++库,它返回一个执行进程的QObject,并在完成时发出信号。在javascript中,我使用发出信号的connect方法(success)附加一个应该处理信号的匿名函数,如下面的代码所示:

var requestResponse = apiClient.execute(reqInp);
requestResponse.success.connect(function success(response) 
{
        var requestResponseJSON = JSON.parse(response.responseAsJsonString());
        this.append(response.responseAsJsonString());
});

我的问题是,有时包含此方法的QML项在C ++代码能够完成之前被销毁,因此当发出信号时,匿名函数会导致错误,因为它调用未定义的方法(在我的例如,方法append)。我在iOS中遇到了一些令人讨厌的崩溃,我怀疑这可能是导致它崩溃的原因。

当创建函数的对象被破坏时,是否存在强制断开信号的方法?

1 个答案:

答案 0 :(得分:0)

var requestResponse = apiClient.execute(reqInp);
function myFunction(response) 
{
        var requestResponseJSON = JSON.parse(response.responseAsJsonString());
        this.append(response.responseAsJsonString());
}
requestResponse.success.connect(myFunction);
requestResponse.destroyed.disconnect(myFunction)