我在BB10级联中遇到了令人沮丧的崩溃。
我有一个“信息中心”页面,其中包含动态数量的项目。项目本身有contextActions。其中一项操作是从仪表板中删除该项目。但是当我删除项目时,应用程序只是强行关闭。
代码摘录如下:
Dashboard.qml
...
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(用于ticketDefinition)
...
contextActions: [
ActionSet {
ActionItem {
id: actionUnTrack
title: "Remove this Ticket"
onTriggered: {
untrackTicket(bookingRef);
}
}
}
]
...
在ticket.qml中,它在实用程序类中调用一个方法untrackTicket,完成后将调用Dashboard.qml中的refreshTickets()。一旦刷新,应用程序就会关闭。
没有崩溃的日志。
有关如何解决此问题的任何建议?
答案 0 :(得分:0)
在untrackTicket中,你是否正在释放你使用ticketContainer.add(obj)添加的obj(控件)所指向的内存?
我怀疑崩溃发生在:
ticketContainer.removeAll();
removeAll()文档说:删除所有容器的控件并释放内存。
如果您已经释放了该内存,则removeAll将尝试删除已被删除的对象,因此会崩溃。