'[Objective-C]id'에 해당되는 글 1건

  1. 2010.06.22 [Objective-C]id 에 관하여
오브젝트C2010. 6. 22. 09:53
[Objective-C]id 에 관하여
1) id 타입으로 선언한 변수에 대해서는 어떤 메소드 호출도 기술할 수 있다.

2) id 타입으로 선언한 변수와 클래스명을 타입으로 선언한 변수 간의 상호 대입이 가능하다.

3) 클래스명을 타입으로 사용해서 변수 선언을 하면 그 클래스가 대응할 수 있는 것 외의 메소드 호출에 대해 경고가 나온다.

4) 클래스명을 타입으로 사용한 변수에 그 클래스의 서브 클래스를 타입으로 하는 변수를 대입할 수 있다.

5) 클래스명을 타입으로 사용한 변수에 그 클래스의 슈퍼 클래스를 타입으로 하는 변수를 대입하지 못한다.

6) 프로그램 코드 상의 선언에 관계없이 런타임에는 실제로 변수에 들어있는 객체의 메소드가 실행된다.

7) id타입은 (NSObject *) 타입이 아니다.

동적 할당에 대한 정리문장 입니다. Java 나 ActionScript 와 비슷한 개념입니다.
상속 관련된 개념들의 설명도 있는데 슈퍼클래스 변수로는 하위 서브클래스를 모두 담을수 있겠지만 그 반대는 불가능 하다는 이야기가 되겠지요.
6번 문장은 슈퍼클래스 변수로 서브클래스 객체를 받았어도 메소드 호출시 슈퍼클래스것이 호출되는것이 아니라 서브것이 호출된다는 소리겠지요.
id 타입이 Java 나 ActionScript 에는 없는 형태여서 - ActionScript 에서 *이 있지만 이것은 타입을 나타내는게 아니라 허용을 나타내는듯 합니다. 또한 형선언 없이 var obj; 이런식의 선언만 하니 직접 뭔가가 대입되기 전까지는 undefineed 로 뜨게 됩니다.

Objective-C 역시 C 기반이기 때문에 컴파일 할때 굉장히 깐깐하게 검사할 줄 알았는데 의외로 허술한 부분이 많더군요.
@interface 부분에서 오타가 나서 실제 @implementation 부분과 메소드 명이 틀려졌었는데 그냥 경고만 띄우고 프로그램은 어찌어찌 굴러 갔었습니다. 하지만 또 가끔 정말 뭔지도 모르는 곳에서 에러가 발생했는데 어디가 문제인지도 모르는 경우도 많구요.

아직까지는 갈길이 멀었으니 좀더 해봐야 알것같네요.


출처 : http://blog.naver.com/PostView.nhn?blogId=khagaa&logNo=30083118522

'오브젝트C' 카테고리의 다른 글

[Objective-C]메모리 관리  (0) 2010.06.22
[Objective-C] 클래스  (0) 2010.06.22
[Objective-C]id 에 관하여  (0) 2010.06.22
[Objective-C] 기본 클래스  (0) 2010.06.22
[Objective-C] 1주일 하면서 알아낸 것들  (0) 2010.06.22
Delegate와 Protocol  (0) 2010.06.22
Posted by 오늘마감

댓글을 달아 주세요