안녕하세여? 소들입니다 :)) 투턱 투척
여름 휴가를 즐기며 제 얼마 안 되는(?) 포스팅을 쭉 읽었는데
왤케 1탄만 투척하고 끝맺음 안 한 게 많은지 OTL...
얼른 하나하나 닫아준단 개념으로 포스팅 해봅니다..
오늘은
Objective-C 뿌수기 2편.. !!!!
1편 안보신 분은Swift 개발자를 위한 옵젝씨 1편 보고 오심이
저번 헤더 파일 살피는 것에서 어떤 것을 공부했냐면..
#import
@interface
전역변수 vs 프로퍼티
메서드 선언
상속
뭐 등등..
이런 거에 대해서 공부했어염
이번에는 구현부 파일엔 어떤 것이 있고
어떻게 사용하는지에 대해 공부해 봅시다 :))
1. ViewController.m을 살펴보자
#import "ViewController.h"
@interface ViewController : UIViewController
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
@end
|
처음 viewController가 생성되면 .m 파일엔 이런 것들이 있음
하나하나씩 살펴보자 👀
1-1. #import
이건 1탄에서 설명한 것과 같은 기능임
근데 .m 파일에선 (헤더 파일이 있다면) 자신의 헤더 파일을 무조건 import 하고 있어야 함
또한, 만약 헤더 파일에서 import한 것은 .m 파일에서 import 할 필요 없음
1-2. @interface , @end
형이 여기서 왜 나와..? 🌸
1편에서 등장한 @interface가 .m 파일에도 똑같이 등장 했다고 생각 하겠지만,
실제로는 다름!!! 여기서 등장한 interface는 익명 카테고리로, Extension임!
따라서 프로퍼티나 인스턴스 변수를 Private로 선언하고 싶을 때 여기다 선언함!
이 부분에 대해 자세히 알고 싶다면 이 포스팅을 참조하셈~_~
1-3. @implementation , @end
interface와 마찬가지로 implementation이 끝나는 곳엔 @end가 있어야 함!
@implementation에서 시작해서 @end가 등장하기 전까지가 implementation field 로, 구현부에 해당하기 때문
이제 이 곳에 메서드를 직접 구현하는 것임
@interface ~ @end | @implementation field ~ @end |
선언부 | 구현부 |
외부에서 사용할 메서드 이름, 인스턴스 변수, property 선언 | 메서드 구현 |
1-4. 메서드 구현
이제 구현부 안에 원하는 메서드를 구현하면 됨
메서드 구현 문법 및 옵젝씨 간단한 문법은 추후 포스팅 하겠음!!
구현부는 매우 간단해 보인다!!!!!!!!!!
왜냐!!!!!!! 중요한건 메서드를 어떻게 구현하냐니까 :)
자 다 살펴본 것 같지만,,
아직 한 발 남았다..
1-5. synthesize
넌 뭐니..?
@synthesize라는 놈이
구현부 내에 이렇게 끼어있는 것을 꽤 볼 수 있음
[ˈsɪnθəsaɪz]
신thㅓ사이즈
마지막으로 이 놈에 대해 알아보자..!!
자 이놈에 대해 알고 싶다면, 먼저 프로퍼티에 대해 알아야 함
프로퍼티 라는 놈은 선언부 (interface field)에서 선언한다 했잖음?!
이런 식으루 말이지
근데 이제 이 프로퍼티를 내가 구현부의 메서드 내에서 쓸라구 하면 말이셈
오류가 난단 말이셈
무슨 오류냐면 말이셈
name이 정의되어 있지 않으니, _name으로 대체하라넹??
Fix를 눌러보면
??
프로퍼티 명 앞에 _가 붙더니 에러가 사라짐
사실 이름 앞에 _를 붙이지 않더라도
self를 통해 접근하면
접근 가능함 뭘까? 👀
자, 프로퍼티의 특성임!!!!!!!1
프로퍼티는 선언부에 선언한 이름을
구현부에서 그대로 접근할 수 없음
따라서 다음과 같이 사용해야 함
프로퍼티명 앞에 _를 붙이거나 self를 통해 접근 하거나
근데 만약 나는 _를 없애고 사용하고 싶어!!!11
그럼 이럴 때 사용하는 게 머다?
synthesize 다!!
synthesize를 이용하면
선언부에 선언된 이름 그대로 접근이 가능하게 해줌
자 구현부에 이렇게 @synthesize를 쓰고 프로퍼티명을 쓰면,
이런 식으로 _를 붙이거나 self.를 통하지 않아도
프로퍼티 name에 그대로 접근할 수 있음!!!
근데 한 가지 유의점은!!!
synthesize를 쓰면
더이상
_로는 접근 못함
self로는 가능!
.
.
자 정리하자면
Synthesize 선언 전 | Synthesize 선언 후 |
_name | name |
self.name |
synthesize를 쓰면 이렇게 되는 것임!!
참고로 위 내용은 프로퍼티 한정임
멤버 변수는 상관 없음
이 부분 또한 자세히 알고 싶다면 이 포스팅을 참조 하시오!
.
.
.
자 오늘은 옵젝씨 ㅣ뿌수기 2편 :)
여러분은 이제 옵젝씨 .m 파일도 읽을 수 있게 되었읍니다 짞짞
다음번엔 간단한 메서드 문법과, 객체 생성 및 접근 등등에 대해 다루겠음!!!!!!!
바바이 :D
'iOS > Objective-C' 카테고리의 다른 글
Objective-C) JSON을 Encoding 해보자 (0) | 2020.12.04 |
---|---|
Objective-C) C++ 사용하기 (0) | 2020.12.02 |
Objective-C) ARC와 Toll-Free Bridging (0) | 2020.11.30 |
Objective-C) 실행 시간 측정하는 함수 (1) | 2020.09.30 |
Objective-C) Swift 개발자를 위한 Objective-C (1) - .h 파일 살펴 보기 (14) | 2020.05.03 |