단지 클래스를 가리키는 포인터가 아니라 이 클래스를 상속받고 있는 경우, 헤더 파일에 @class를 사용하는 것만으로는 모든 정보를 전달할 수 없다. 즉, 전방선언이 아니라 포함을 해야하는데, 이런 경우 #import 를 사용한다. 단, 코드를 보면 는 사용하고 있지 않은데, Engine.h가 이미 를 포함하고 있다는 것을 알고 있기 때문에 여기서는 포함할 필요가 없는 것이다. 하지만 포함시켜도 문제는 없다. #import는 똘똘하니까 ㅎ ex) #import "Engine.h" @interface Slant6 : Engine @end // Slant6
접근자 메소드란? 접근자 메소드(Accessor Method)는 객체의 특정한 속성을 읽거나 변경할 때 쓴다. 객체의 값을 설정하는 메소드를 세터(Setter). Ex) - (void) setMyValue:(id)obj; 객체의 상태를 변경하는 메소드를 뮤테이터(mutator). 객체의 속성에 접근하기 위한 객체를 사용하는 코드를 제공하는 메소드를 게터(getter) 게터 메소드는 단순히 자신들이 반환할 속성의 이름으로 쓰여진다. Ex) -(MyValue *) myValue;
@implementation Circle - (void) setFillColor: (ShapeColor) c { if (c == kRedColor){ c = kGreenColor; } [super setFillColor: c]; } // setFillColor // and the rest of the Circle @implementation // is unchanged @end // Circle ------------------------------------------ 빨간 원을 녹색 원으로 바꾸는 소스이다. setFillColor: 가 Shape에 정의되어 있는 경우, super를 사용해서 수퍼클래스(Shape)에게 fillColor의 인스턴스 변수에 변경된 색을 저장할 수 있도록 할 수 있다. (s..