안녕하세요 푸민입니다!
저번 포스팅에서 Interface와 Message에 대해서 알아보았습니다.
이번에는 Implementation에 대해서 알아볼게요!
1. Implementation
Implementation 은 Interface로 만들어 놓은 틀(클래스)을 직접 구현하는 부분입니다.
즉 실질적인 기능이 되는 곳이에요!
Interface 는 .h 라는 파일로 만들어지고,
Implementation 은 .m 이라는 파일로 만들어집니다.
그래서 실제로 나중에 Xcode에서 작업하시면
항상 .h 파일과 .m 파일이 함께 만들어지는 것을 보실수 있어요!
Implementation 의 기본 구조는 아래와 같습니다.
@implementation classname + (return_type)classMethod { // implementation } - (return_type)instanceMethod { // implementation } @end
Interface 와 같은 classname 을 사용하시면 됩니다!
그리고 +, - 는 저번 포스팅에서 알아봤듯이 클래스 메소드냐 인스턴스 메소드냐를 구분합니다.
그리고 () 괄호안에 리턴타입을 넣어주시구요. 뒤에 메소드이름을 작성하시면 됩니다.
그리고 메소드 이름 뒤로는 {}괄호가 나오는데요,
이 괄호 안에 구현한 것들이 실제로 동작하는 것입니다.
그리고 파라미터 값을 주는 경우 일반적으로 메소드는
int function (int i) { return square_root(i); }
이런 형식이었지만,
오브젝트 C에서는
- (int)method:(int)i { return [self square_root:i]; }
요런 형식으로 바뀝니다.
메소드 이름 뒤에 : 연산자를 이용하여 파라미터를 넘겨줍니다.
여러개의 파라미터일 경우에는
- (int)changeColorToRed:(float)red green:(float)green blue:(float)blue; [myColor changeColorToRed:5.0 green:2.0 blue:6.0];
이런식으로 : 연산자를 계속 활용하시면 됩니다.
첨에 할때 이 부분이 잘 안되서 오브젝트C는 메소드도 안만들어진다며... ㅋㅋㅋㅋㅋㅋ
그런 기억이 나네요 ㅋㅋㅋ
2. Instantiation
두번째로 보는 것은 Instantiation 입니다.
이것은 클래스를 실제 인스턴트로 생성하는 방법인데요.
보통은 뉴 연산자를 사용하여 많이 했는데 오브젝트 C는 조금 다릅니다!
왜냐구요??? 잡스니까요!
./.....
죄송
MyObject *o = [[MyObject alloc] init];
보시면 먼저 해당 객체의 alloc 메소드를 부르고 그다음에 init 메소드를 부릅니다.
이게 일반적으로 클래스를 인스턴스와 시키는 것이구요.
MyObject *o = [[MyObject alloc] initWithString:myString];
이런식으로 커스터마이징한 클래스를 인스턴스화할 수 있습니다.
그리고 또한 new 연산자를 사용할 수도 있네요!
MyObject *o = [MyObject new];
마지막으로 몇몇 클래스는 초기화하는 메소드를 제공하거나 초기화가 된경우가 있습니다.
MyObject *o = [MyObject object]; MyObject *o2 = [MyObject objectWithString:myString];
Init 메소드를 구현하는 방법으로는
- (id)init { self = [super init]; if (self) { // perform initialization of object here } return self; }
이렇게 하시면됩니다.
먼저 self에 super를 초기화하여 넣어주시고,
각종 초기화를 한뒤에 self를 리턴해주시면 됩니다.
어려운것 같기도 하고 쉬운것 같기도하고...
하면서 계속 배우고 늘려가야되는것 같네요 ㅋㅋㅋ
이번 포스팅은 이만 마칠게요~
즐코딩되세요!
'Development > iPhone' 카테고리의 다른 글
[iOS][Objective-C] WebKit 사용 방법 (0) | 2021.06.28 |
---|---|
[iOS][iPhone][ObjectC-05] 객체지향의 주요 개념. 동적형변환! Dynamic typing. (0) | 2015.08.29 |
[iOS][iPhone][ObjectC-04] 오브젝트C로 추상클래스를 구현하자! Protocol! (0) | 2015.08.11 |
[iOS][iPhone][ObjectC-02] 오브젝트 C 기본 문법 Message, Interface! (0) | 2015.08.08 |
[iOS][iPhone][ObjectC-01] 오브젝트 C가 뭔가, 개요 (0) | 2015.08.07 |
댓글