본문 바로가기

Develop/Objective-C

연관이 없는 object들 간의 메세지 전달방법 : notification, KVO

1. notification  (하나의 어플리케이션 안에는 하나의 노티피케이션센터만이 존재한다)
   [[NSNotificationCenter defaultCenter] addObserver:self 
                                                                selector:@selector(실행될함수명:)
                                                                name:@"전달할메시지"
                                                                object:nil ];

  이렇게 선언해놓고 m파일에 실행될 함수를 만들자!!
  
  -(void)실행될함수명:(NSNotification *)notification
  {
        실행될 로직.....
  }

  이제 어떤 변화가 일어 날경우 노티피케이션 센터에 메세지를 전달시켜줘서 노티피케이션이 실행되게끔 해야 한다.
  [[NSNotificationCenter defaultCenter] postNotificationName:@"전달할메시지" object:self];
  변경될 부분에 이렇게 메시지를 전달하면 노티피케이션에서 메시지를 받아서 실행될 함수를 실행한다.
   끗.. 자주 쓰인다고함..

2.  KVO (Key Value Observing) 키값 감시

  델리게이트 app 실행될때

[클레스 addObserver:self forKeyPath:@"감시할값

 options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld 

 context:nil];

  이렇게 선언해준다.


  그담 observer 감지될때 실행할 함수를 등록한다. 함수명 자동완성이 안될땐 addObserver 도움말을 참조하자..

  

  - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 

                     change:(NSDictionary *)change context:(void *)context

     {

if ([keyPath isEqualToString:@"감시할값"]) {

            [self 실행될함수명];

 }

      }