首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除调用事件的QML对象时崩溃

删除调用事件的QML对象时崩溃
EN

Stack Overflow用户
提问于 2013-11-20 15:37:04
回答 1查看 125关注 0票数 0

我正在经历一个令人沮丧的碰撞在BB10级联。

我有一个“仪表板”页面,其中有一个动态数量的项目。这些项目本身就有contextActions。其中一个操作是将项目从仪表板中移除。然而,当我删除项目时,应用程序只是强制关闭。

守则的摘录如下:

Dashboard.qml

代码语言:javascript
复制
...
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)

代码语言:javascript
复制
...
contextActions: [
    ActionSet {
        ActionItem {
            id: actionUnTrack
            title: "Remove this Ticket"
            onTriggered: {
                untrackTicket(bookingRef);
            }
        }
    }
]
...

在ticket.qml中,它在实用程序类中调用一个方法untrackTicket,该方法在完成后将调用Dashboard.qml中的refreshTickets()。一旦刷新发生,应用程序就会关闭。

没有记录坠机的记录。

对于如何解决这个问题,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-20 20:22:41

在untrackTicket中,您是否正在释放使用ticketContainer.add( obj )添加的obj(控件)所指向的内存?

我怀疑坠机事件发生在:

代码语言:javascript
复制
ticketContainer.removeAll();

removeAll()文档说:删除容器的所有控件并释放它们的内存。

如果您已经释放了该内存,removeAll将尝试删除已被删除的对象,从而导致崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20100204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档