static int DoAddAll(int msg, int code, object onFire) { EventObserver observer = IdTypePool <EventObserver> .Get(); observer.Init(null, msg, code, true, onFire); AllNotifier.Add(observer); m_observersById.Add(observer.Id, observer); return(observer.Id); }
//取消监听 public static void Remove(EventObserver observer) { if (observer.IsInPool) { Debuger.LogError(string.Format("重复删除监听者:{0} {1}", observer.Id, Util.GetDelegateName(observer.GetDelegate()))); return; } if (observer.removeCounter > 0 && m_fireCount > 0) { // Debuger.LogError(string.Format("重复删除监听者:{0} {1}", observer.Id, Util.GetDelegateName(observer.GetDelegate()))); return; } observer.removeCounter = 1; if (m_fireCount > 0) { m_delayRemovesObservers.Add(observer); return; } if (!observer.isAll) { observer.notifier.Remove(observer); AllFireNotifier.Remove(observer); } else { AllNotifier.Remove(observer); } if (!m_observersById.Remove(observer.Id)) { Debuger.LogError(string.Format("删除了不存在的监听者:{0}", observer.Id)); } IdTypePool <EventObserver> .Put(observer); }