【发布时间】:2015-06-15 16:14:37
【问题描述】:
在 QML 中,我使用了一个 C++ 库,它返回一个 QObject,它执行一个进程并在完成时发出一个信号。在 javascript 中,我使用正在发出的信号 (success) 的 connect 方法来附加一个匿名函数,该函数应该处理信号,如下面的代码所示:
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 中遇到了一些令人讨厌的崩溃,我怀疑这可能是导致它的原因。
当创建函数的对象被销毁时,有没有办法强制断开信号?
【问题讨论】:
标签: javascript c++ qt qml signals-slots