[Objectiv-C] id에 대해서

설명에 앞서

블로그에 쓰고있는 순서는 배움의 순서와는 상관이 없습니다.
단지 제가 필요하거나 혹은 방문자분들께 도움이 될만한 정보를 조각내서 올릴 예정입니다.
강좌 방식을 원하는 분들과는 조금 거리가 있을 수 있습니다.

포인터는 포인터인데..

객체를 가리키기 위한 포인터를 선언 할 때 해당 객체의 클래스를 지정합니다.

1
NSString *str;

하지만 정확히 어떤 객체를 가리킬지 정의하지 않고 일단 포인터만 만들어야 할 때도 있습니다.
이럴때 사용할 수 있는 타입이 id입니다.

“일단 만들긴 하는데 어떤걸 가리킬지는…”

1
2
3
4
5
// 변수로 선언
id delegate;

// 메서드 선언. id를 반환 가능
-(id) foo: (int)

일단 유심히 봐야할 점이 애스터리시크(*)가 없습니다.
id가 애스터리스크를 내포하고 있기 때문입니다.

Objective-C Documentation에서는 아래와 같이 정의하고 있습니다.

예시

1
2
NSString *str = @"what is id in Objective-C?";
id title = str;
1
2
id data = "...";
NSString *desc = [data description];

꼭 알아야 하는 개념?

분명히 Documentation에 많은 부분이 id를 리턴하는 형태로 되어있을 것 입니다.
하지만 처음부터 id에 대해서 깊게 다가가기 보다는 대략적인 개념만 알고 다음에 다시 찾아볼 기회가 있을 것 입니다.
자주 사용하고, 자주 보게되는 문법, 메소드 들은 자연스레 익혀지기 마련입니다.