在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中遇到了一些令人讨厌的崩溃,我怀疑这可能是导致它崩溃的原因。
当创建函数的对象被破坏时,是否存在强制断开信号的方法?
答案 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)