메세징 기법 (객체간 통신)

Tags
messaging

메세징 기법

  • Obj-C에서 객체간의 통신에 사용되는 기법
    • 메소드 호출(calling)이 아닌 메세지 전달(message passing)
notion image

다른 언어와 비교

1) 일반적인 객체지향 언어들 (C++, Java 등)

  • 메소드 호출
    • 혹은 . 을 통해 직접 호출
    • data->get_data(); data.get_data();

2) Obj-C (동적인 언어)

  • 메세지 전달
    • [ 객체 메세지 ] 또는 [ 클래스 메세지 ]
    • [] 대괄호를 통해 메세지 전달을 명시함.
    • 이처럼 대괄호를 이용한 구문을 “메세지를 보낸다”라고 함.
      • 객체 : 메세지 수신자
      • 메세지 : 객체에 전달할 메세지 (메소드 호출 등)
    • 런타임 라이브러리 함수들에 의해 런타임에서 메세지에 맵핑된 처리함수를 찾아 수행 후 반환됨.

메세지 전달 구문

메소드 정의

  • 인스턴스 메소드를 예시로 들지만 클래스 메소드도 맨앞에 - 대신 +로 명시하는 것 외에는 동일하다.
  • 메세지명 사이사이에 콜론으로 매개변수가 들어가는 특이한 구조를 가진다.
notion image
  • 전체 메세지 명은 addX:withY:이다.
  • 콜론(:) 뒤에는 매개변수가 들어간다.
  • {} 중괄호 사이에 메세지 호출 시 실행할 내용을 명시한다.

메세지 전달

notion image
 
  • [] 대괄호로 메세지 호출을 명시한다.
  • 맨 앞에는 메세지 수신자
    • 해당 메세지가 명시된 클래스명 또는 객체
  • 뒤에는 메세지명매개변수를 전달한다.