objective-c 기초 문법
- ANSI C의 상호호환으로 C문법을 그대로 쓸 수 있다.
- id 데이터 형: 어떤 데이터가 들어올지 알 수 없을 때 자유로이 형변환이 가능하다.
- 함수 호출: 함수를 쓰겠다고 메시지를 보내는 형태. 함수가 없다면 nil을 리턴하기 때문에 프로그램이 멈추지 않는다.
- object 가 정확하게 지칭하는 바는 variable안에 들어있는 것이다. -> 이해 못함
- 주석: //
- ! -> not을 의미한다. BOOL자료형 앞에 쓰일 수 있음
*참고 사이트 github.com/Gyubin/TIL/blob/master/iOS/Objective-C.md
구성요소
- .h 헤더파일(class, type, function, 상수 등 기록)
- .m 소스파일(Objective-C, C코드포함)
- .mm 소스파일(Objective-C, C, C++코드포함)
- Foundation.h stdio.h #import <Foundation/Foundation.h>
- @ -오브젝트 C언어라는 것을 말해줌, C와의 충돌 피하기
- BOOL 타입 YES, NO 로 사용
- 인다이렉션: 직접 처리하지 않는것, 파일 인다이렉션
- id: 객체를 가르키는 포인터 / / void* 와 같음
- self: 자신을 가르키는 포인터 // java의 this와 같음
- nil: 객체가 없음을 나타내는 포인터
- enum: 열거형 상수
- %s: 문자열 대체
- %d: 정수
- %i
전처리기
- #import, #include
- #define : 상수값에 심벌명 부여
- #ifdef 중복 선언 방지
지시어
1. 컴파일러 지시어
- @interface : 클래스 선언
- @implementation : 클래스 구현
- @protocol : delegate 등 일반적인 선언을 할때 사용
- @end : class, category, protocol등을 종료할 때 사용
2. member접근 지정자
- @private : 상속불가, 해당 클래스 안에서만 사용되는 member들의 집합
- @protected 정의된 클래스, 상속된 클래스에서만 접근이 가능한 member들의 집합
- @public 모든 곳에서 사용할 수 있는 member
3. exception 핸들링을 위해 사용되는 지시어
- @try : Exceptions이 던질 수 있는 block을 정의한다.
- @throw : Exception object를 던진다.
- @catch() : @try block안에서 던져질 exception을 catch한다.
- @finaly : @try block에서 Exceptions가 던져지던 아니던 수행되어질 block code를 정의한다.
4. 선언을 위한 지시어
- @property : 프로퍼티 정의에 사용
- @synthesize property로 정의한 변수 등의 getter, setter없이 사용하고자할 때
- @dynamic : 동적으로 사용되는 메서드와 변수에 사용
5. objective-C 특별한 지시어
- @class : 사용자 클래스 선언을 위해서 사용
- @selector(method_name) : 정의된 메서드 이름을 리턴
- @protocol(protocol_name) : 프로토콜 클래스의 인스턴스를 리턴
- @encode(type_spec) : type_spec의 구조를 인코딩하는 문자열을 산출
- @synchronized() : 하나의 스레드의 의한 코드 블럭 정의시 사용
- nonatomic: 멀티 스레스 환경 작동 안하게
- retain : 뷰 컨트롤러가 존재하는 한 변수가 메모리에서 머무르게.