删除调用事件的QML对象时崩溃
我在BB10 cascades上遇到了一次令人沮丧的崩溃 我有一个“仪表板”页面,其中包含大量动态项目。项目本身具有contextActions。其中一个操作是从仪表板中删除该项。但是,当我删除项目时,应用程序只是强制关闭 代码摘录如下: Dashboard.qml删除调用事件的QML对象时崩溃,qml,blackberry-10,blackberry-cascades,Qml,Blackberry 10,Blackberry Cascades,我在BB10 cascades上遇到了一次令人沮丧的崩溃 我有一个“仪表板”页面,其中包含大量动态项目。项目本身具有contextActions。其中一个操作是从仪表板中删除该项。但是,当我删除项目时,应用程序只是强制关闭 代码摘录如下: Dashboard.qml ... Container { id: ticketContainer bottomPadding: 20 horizontalAlignment: HorizontalAlignment.Fill } ..
...
Container {
id: ticketContainer
bottomPadding: 20
horizontalAlignment: HorizontalAlignment.Fill
}
...
function refreshTickets() {
ticketContainer.removeAll();
for (var i=0; i<tickets.length; i++) {
var obj = ticketDefinition.createObject();
obj.bookingRef = tickets[i].bookingReference;
obj.bookingDate = ticket[i].bookingDate;
ticketContainer.add(obj);
}
}
在ticket.qml中,它调用实用程序类中的untrackTicket方法,完成后将调用Dashboard.qml中的refreshttickets()。一旦刷新发生,应用程序就会关闭
没有关于崩溃的日志
关于如何解决这个问题有什么建议吗?在untrackTicket中,您是否正在释放您使用ticketContainer.add(obj)添加的obj(控件)指向的内存 我怀疑坠机发生在:
ticketContainer.removeAll();
removeAll()文档说明:删除容器的所有控件并释放它们的内存
如果已释放该内存,removeAll将尝试删除已删除的对象,因此将崩溃。谢谢。我在其他地方使用过removeAll,它工作得很好,当其中一个控件负责触发操作时,这似乎只是一个问题。我已经设法通过使用ticketContainer.remove()来修复它,它不会清除对象的内存。这并不理想,但在这种情况下,它应该可以工作,因为我的应用程序不允许每个用户超过2张票证,并且当页面关闭时,票证将从内存中清除。
ticketContainer.removeAll();