예전의 어색했던 기억을 더듬다보면 시간을 그때로 돌려서 다시 행동하고 싶은 생각을 하듯이..
지난 가을 겨울 캥거루때로 돌아가 뭘 좀 더 알고 다시 짜고 싶은 생각을 지금도 가끔씩은 한답니다. 부끄러운 이야기지만 당시 오브젝티브 씨에서 클래스와 딜리게이트 개념이 참 이해하기 어려웠어요.. 지금 다시하면 조금은 나을지 궁금하네요 ^^
출처 : sungjinl2e님(sungjinl2e.egloos.com)
Objective-C에는 @interface라는 키워드가 있다. C++에서의 Class와 같은 의미이다.
특이한건 모든 키워드마다 앞에 "@"가 붙는다. 그리고 마지막에 @end로 끝난다는 것이다.
아래의 예제는 간단한 클래스를 만든 예제이다.
// -------------------------------------- 클래스 선언부. -----------------------------------------//
// Animal.h파일 생성 후 구현.
@interface Animal : NSObject {
int age;
NSString name;
}
+(void)eat; // + 는 static 함수라는 의미 - class method
-(void)move; // - 는 일반 멤버 함수라는 의미 - instance method
-(id)init; // 생성자.
// id타입은 모든 객체의 주소를 담을 수 있는 타입이다.
@end
// -------------------------------------- 클래스 구현부. -----------------------------------------//
// Animal.m 파일 생성 후 구현.
@implementation Animal
// 초기화 함수를 구현.( 생성자 역할 )
-(id)init {
if ( self = [super init] ) {
age = 1;
name = @"AAA";
}
return self; // self => c++에서의 this.
}
// eat함수 구현
+(void)eat {
NSLog(@"eat"); // C에서의 prinft()함수.
}
// move함수 구현.
-(void)move {
NSLog(@"move");
}
@end
// ----------------------------------------- main 함수. --------------------------------------------//
// 객체를 생성 하는 방법. : [ Animal alloc ]
// 메소드를 호출하는 방법. : [ p eat ]
// 초기화 함수 만들기(생성자) : Objective-C에서는 생성자라는것이 정해져 있지 않다.
// 일반적으로 init를 많이 사용.
int main()
{
Animal* p = [ [ Animal alloc ] init ]; // 객체의 생성과 초기화를 동시에 수행.
// Animal 객체를 생성하고,
// Animal의 init초기화 메소드를 호출.
[ p eat ]; // eat 메소드 호출.
[ p move ]; // move 메소드 호출.
[ p release ]; // C++에서의 delete.
return 0;
}
'2_ 바삭바삭 프로그래밍 > Objective C' 카테고리의 다른 글
objective C - 아이폰 앱에 진동 기능 추가하기 (0) | 2011.06.03 |
---|---|
[Objective C] 주소록에서 전화번호 가져오기 (0) | 2011.05.26 |
xcode - Class Method VS Instance Method (0) | 2010.12.28 |
xcode - 문자열 관련 함수 (0) | 2010.12.13 |
xcode - 문자열을 다루는 함수 정리 (0) | 2010.09.27 |