gpt4 book ai didi

ios - 从内存中删除事件处理程序(ortc),钛

转载 作者:行者123 更新时间:2023-11-29 12:34:35 24 4
gpt4 key购买 nike

我有内存泄漏:

    var ortc = require("co.realtime.ortc");

function ortcNot() {

ortc.clusterUrl = 'http://ortc-developers.realtime.co/server/2.2';
ortc.connectionMetadata = 'Titanium Example';

ortc.addEventListener('onException', function(e) {
Ti.API.info('Exception: ' + e.info);
});

ortc.addEventListener('onConnected', function(e) {
Ti.API.info('Connected to ORTC server');
ortc.subscribe('yellow24', true);
});

ortc.addEventListener('onDisconnected', function(e) {
Ti.API.info('Disconnected from ORTC');
//remove event handlers
//ortc = null;

});

ortc.addEventListener('onSubscribed', function(e) {
Ti.API.info('Subscribed to: ' + e.channel);
Ti.API.info('Sending a message to: ' + e.channel);
//ortc.send(e.channel, 'Message from iPhone');
});

ortc.addEventListener('onUnsubscribed', function(e) {
Ti.API.info('Unsubscribed from: ' + e.channel);
ortc.disconnect();
});

ortc.addEventListener('onMessage', function(e) {
Ti.API.info('Message received: ' + e.message + ' at channel: ' + e.channel);
//parse message
var message = JSON.parse(e.message);

alert(message.user.message);

//check chat id
if (message.id == args.chatId) {

recieveMessage(message);

}
//ortc.unsubscribe(e.channel);
Ti.API.info(ortc.isConnected());
});


ortc.connect('yellow2');

}

ortcNot();

当我关闭我的 Controller 窗口,然后重新打开窗口。旧的事件监听器仍在内存中,导致创建重复的事件监听器。

知道为什么会这样,如何解决?谢谢

最佳答案

不要使用内置函数定义监听器,而是始终将它们声明为调用函数。

要删除一个 eventListener,它在 addEventListener 和 removeEventListener 中必须相同,将其声明为一个函数并将其分配给 eventListener 可以解决这个问题。例如

var viewObject = null;

function eventTodo(){
// do stuff here ...

viewObject.removeEventListener('click', eventTodo);
}

function addListener() {
viewObject = Ti.UI.createView();
viewObject.addEventListener('click', eventTodo);

 return viewObject;
}

当您关闭窗口时,您并没有调用 removeEventLister,这就是每次打开窗口时都会复制事件的原因。将关闭事件附加到有问题的窗口对象,该对象调用一个函数来删除所有 eventListener,从而将它们从应用程序内存中删除。

关于ios - 从内存中删除事件处理程序(ortc),钛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com