EventReciever::~EventReciever() { // unplug any EventListeners that points to this object for(EventListener* l = _listeners.first(); _listeners.canMove(); l = _listeners.next()){ if (l != 0) l->_unplug(); } }
// removes any listeners that points to the same reciever and reciever callback method // the Listener object created here doesn't have to be the same object that was added to addListener // deleteObj is used if the EventListener whas created with new void EventSender::removeListener(EventListener &listener, bool deleteObj /*= false*/) { listener._sender = this; int32_t idx = _listeners.indexOf(&listener); if (idx > -1){ EventListener* l = _listeners[idx]; l->_unplug(); if (deleteObj) delete l; } }
EventSender::~EventSender() { for(EventListener *l = _listeners.first(); _listeners.canMove(); l = _listeners.next()){ l->_unplug(); } }