public void Add(EventObserver observer) { Dictionary <int, EventObserver> obs = observersByMsgCode.GetNewIfNo(observer.Key); if (obs.Count > 100) { Debuger.LogError("EventMgr同一个对象的同一个消息的监听者过多,是不是泄露:{0} {1} {2}", observer.msg, observer.code, Util.GetDelegateName(observer.GetDelegate())); } obs.Add(observer.Id, observer); observersById.Add(observer.Id, observer); }
//取消监听 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); }