Objective-C = C + 스몰토크 언어
특징)
C 스타일 구조, 함수 호출, 메모리 할당, 포인터 모두 가능하다.
스레드 동기화, 트라이- 캐치 블록, 가비지 컬렉션 기능도 추가되어 있다.
1.1)클래스 구조
클래스 = 멤버 변수(데이터) + 메소드(함수를 포함한 오브젝트)
클래스는 @interface 키워드를 사용 하여 정의한다.
.h파일 : 정의
.m파일 : 구현
1.1.1) Objective-C 클래스 구조 예)
함수는 보통 - 로 시작한다.
클래스 메소드 사용 + 로 한다.
1.1.2)동일한 자바 구조
1.1.3 Objective-C 확장과 상속 구조
-Objective-C도 자바 처럼 여러클래스를 상속 할수 없다는 점 주의 할 것.
1.1.4 Objective-C 구현
@protocol로 정의하며 절대적으로 virtual이어야 한다는 점만 제외하고 C++ 추상 베이스 클래스와 비슷하다.
어떠한 멤버 변수나 메소드 구현을 가져서는 안된다.
자바 인터페이스 클래스는 Objective-C에서 프로토콜 클래스라 부른다.
@protocol을 사용한다.
1.1.5) Objective-C 인터페이스 예
1.1.6) Objective-C 구현
특징)
C 스타일 구조, 함수 호출, 메모리 할당, 포인터 모두 가능하다.
스레드 동기화, 트라이- 캐치 블록, 가비지 컬렉션 기능도 추가되어 있다.
1.1)클래스 구조
클래스 = 멤버 변수(데이터) + 메소드(함수를 포함한 오브젝트)
클래스는 @interface 키워드를 사용 하여 정의한다.
.h파일 : 정의
.m파일 : 구현
1.1.1) Objective-C 클래스 구조 예)
@interface Animal { // 멤버 변수는 여기에 둔다.
@private
int foo;
} //클래스 메소드는 중괄호 바깥인 여기에 둔다.
-(int) bar : (double) input1; @end |
함수는 보통 - 로 시작한다.
클래스 메소드 사용 + 로 한다.
1.1.2)동일한 자바 구조
class Animal { private int foo; public int bar(double intput1) {...} } |
1.1.3 Objective-C 확장과 상속 구조
@interface Animal : NSObject { } //Objective-C 상속
@end
class Animal extends NSObject { //Java 상속 } |
@protocol로 정의하며 절대적으로 virtual이어야 한다는 점만 제외하고 C++ 추상 베이스 클래스와 비슷하다.
어떠한 멤버 변수나 메소드 구현을 가져서는 안된다.
자바 인터페이스 클래스는 Objective-C에서 프로토콜 클래스라 부른다.
@protocol을 사용한다.
1.1.5) Objective-C 인터페이스 예
@protocol GameEventListener 구현하기 //프로토콜은 멤버 변수를 포함하지 않고 중괄호도 사용하지 않는다. // 메소드 정의는 여기에 하지만 아직 구현은 하지 않는다. -(BOOL) isListening; -(void) handleEvent : (int) event; @end @interface Animal : NSOnject <GameEventListener> { //멤버 변수는 여기에 둔다. @private int foo; BOOL active; } //메소드와 오버라이드 메소드는 여기에 둔다. -(int) bar : (double) input1; -(BOOL) isListening; -(void) handleEvent : (int) event; @end |
1.1.6) Objective-C 구현
@implementation Animal @synthesize foo; -(void) bar : (double) input1 { //input1으로 할일을 한다.
}
-(BOOL)isListening { return self.active;
}
-(void) handleEvent : (int) event { //event에 따라 할 일을 한다.
} @end |