* iPhone에서의 상속은 거의 모두 NSObject 또는 NSProxy로부터 받는다

* id 타입이란 일반 C 코딩에서의 "주소"와 거의 같은 개념이다.

* 실행 중간의 디버깅 및 값 확인은 NSLog를 써서 콘솔 창에서 확인하는 것이 좋다.

* 유저가 만드는 클래스는 크게 2가지 뿐.
  - 데이터 모델 (구조체)
  - 상위로부터 상속받아 사용하는 클래스

* delegate는 상위 클래스나 SDK에 구현되어 있는 기능을 빌려와서 사용할 때 쓰는 것. 거의 대부분은 self(C++ 에서는 this)를 통해 자신을 참조하게 하여 사용한다. 

* 상위 클래스의 멤버와 같은 이름의 멤버를 하위 클래스에서 선언, 또는 재정의(오버라이딩)하면 상위 클래스의 원래 멤버가 가려져서 부를 수 없게 되므로, 자신이 정의한 메소드는 this를 이용해 호출하고 상위 클래스의 원래 멤버는 super를 이용해서 호출해야 한다.

* 대개 아이폰 SDK에 구현되어 있는 기본적 기능을 이용할 경우(메모리나 화면에 관련된 처리) 이러한 super를 이용해 상위 클래스의 멤버를 호출해 오버라이딩을 사용한다.

* typedef
  - 자료형에 별명을 붙일 때 사용하는 예약어.
  - typedef [대상자료형] [별명으로 사용할 이름];

* 전처리기(Preprocessor)
  - 일반적 C와 같음
  - #으로 시작함
  - 꼭 오브젝티브 C의 문법일 필요는 없음
  - 끝에 ; 표시를 쓰지않음

* #define
  - 상수값에 심벌명을 부여한다
  - 연산자의 재정의도 가능. 즉 #define AND &&, 또는 #define SAME == 와 같은 것도 가능하다. 

* 매크로 함수
  - #define 문을 사용해서 수식 을 대치함.
  - 실제의 함수는 아니지만 마치 함수처럼 사용할 수 있기 때문에 매크로 함수라고 부른다.
  - 매크로명을 모두 대문자로 써서 구분하는 것이 일반적.

* C의 배열은 사용가능하지만 가능한 한 사용하지 않는 것이 좋다.
  - 경계가 없다. 첨자가 3인 배열에서 -1이나 10도 넣거나 읽을 수 있다.
  - 값을 잘못 넣으면 기존에 있는 변수의 값을 건드려 바꿔버릴 수도 있다.

* CGPoint, CGRect, CGSize

CGPoint pt;
pt.x = 10;
pt.y = 20;

CGPoint pt = {10, 20};

CGPoint pt = CGPointMake(10, 20);

 CGRect
 {
    CGPoint origin;
    CGSize size;
  }

+ Recent posts