u 클래스 정의
n Interface : 한 클래스의 메소드와 인스턴스 변수를 선언하고, 어느 수퍼클래스로부터 상속을 받는지를 기입
헤더 파일인 *.h 파일에 정의
n Implementation : 실지로 클래스를 정의하는 부분
구현 파일인 *.m에 구현
n 해더 파일과 구현부를 나누는 이유
외부에서 볼때 구현부를 독립해 접근 불가능
n 작성 요령
가능하면 1:1로 작성 이름을 통일
n 인터페이스 작성 예
@interface ClassName : ItsSuperClass { instance variables declaration.. } method declarations @end |
n 메소드 선언시 옵션
- |
Instance method |
+ |
Class method |
메소드 선언시 인스턴스와 클래스메소드 같은 이름으로 생성 가능
메소드 이름과 인스턴스 변수도 같은 이름으로 생성 가능
n 메소드 선언 예
-선언
- (void) setWidth: (float) width height: (float) height;
-사용
id *myRect = [[Rectangle alloc] init];
[myRect setWidth:12.2 height:18.0];
-가변적 변수수를 가진 메소드 선언
- makeGroup:group, …;
n interface import
interface import은 C의 #include와 동일하나, import가 똑 같은 것을 한번만 가져오는 것만 inclue와 다름.
n implementation 작성예
@implementation ClassName : ItsSuperclass -> superclass 생략 가능 { instance variable declarations -> 생략 가능 } method definitions @end |
간단히 쓰면,
#import "ClassName.h" @implementation ClassName method definitions @end |
n 다른 클래스 참조
인터페이스에 선언되지 않은 클래스를 사용할 때
상호참조의 문제를 해결하기 위해 @class 지시자를 사용.
@class Rectangle, Circle; |
이것은 단지 컴파일러에 이것이 클래스 이름이라는 것만 알려주는 역할
n 인터페이스 특징
인터페이스파일은 클래스의 참조현황을 파악하기 쉽게함
인스턴스 개체를 따로 관리함으로서 보다 직관적인 OOP를 가능하게 함
n instance변수들의 사용범위를 설명한 지시자
@private |
instance변수의 범위를 그것이 선언된 class로 한정한다.(상속불가) |
@protected |
instance변수의 범위를 선언되고, 상속된 class로 한정한다. (상속가능) |
@public |
instance변수의 범위에 대한 제한을 없앤다. (상속가능) |
n instance변수 범위 지정의 이유
슈퍼클래스 변수와의 독립성을 유지함으로서 보다 완벽한 오브젝트화 가능
n 다른 객체에 속한 인스턴스 변수사용 예
선언구현부
@interface Sibling : NSObject { Sibling *twin; int gender; struct features *appearance; } |
참조구현부
- makeIdentification { if( !twin) { twin = [[Sibling alloc] init]; twin->gender = gender; twin->appearance = appearance; } return twin; } |
'아이폰개발' 카테고리의 다른 글
[아이폰개발] Objective-C 3.프로토콜 (0) | 2010.12.16 |
---|---|
[아이폰개발] Objective-C 2.오브젝트의 메모리 할당과 초기화 (0) | 2010.12.15 |
[아이폰개발] 오브젝트C 한글 레퍼런스 (2) | 2010.12.08 |
iPhoneアプリの売上を暴露する (0) | 2010.12.06 |
스마트폰 업계 동향 pdf (0) | 2010.12.06 |