BBGamelib.NSNotificationCenter.addObserver C# (CSharp) Method

addObserver() public method

public addObserver ( System target, Action aSelector, string aName, System sender = null ) : void
target System
aSelector Action
aName string
sender System
return void
		public void addObserver(System.Object target, Action<NSNotification> aSelector, string aName, System.Object sender=null){
			List<NSNotificationObserver> observers = null;
			if (!_name_observers.TryGetValue (aName, out observers)) {
				_name_observers[aName] = observers = new List<NSNotificationObserver>();		
			}
			NSNotificationObserver observer = null;
			var enumerator = observers.GetEnumerator();
			while (enumerator.MoveNext()) {
				NSNotificationObserver aObserver = enumerator.Current;
				if(aObserver.target == target){
					observer = aObserver;
				}
			}
			if (observer == null) {
				observer = new NSNotificationObserver ();
				observer.target = target;
				observer.selectorAndSenders = new List<NSNotificationSelectorAndSender> ();
				observers.Add(observer);
			} else {
				var eu = observer.selectorAndSenders.GetEnumerator();
				while (eu.MoveNext()) {
					NSNotificationSelectorAndSender selectorAndSender = eu.Current;
					NSUtils.Assert(selectorAndSender.selector != aSelector || selectorAndSender.sender != sender, 
					               "NSNotificationDelegate#addObserver : Dont' add observer with same target/method/sender !");			
				}	
			}
			NSNotificationSelectorAndSender selAndSender = new NSNotificationSelectorAndSender();
			selAndSender.selector = aSelector;
			selAndSender.sender = sender;
			observer.selectorAndSenders.Add (selAndSender);
		}