본문 바로가기

iOS/Objective-C

Objective-C 기초 내용

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 : 뷰 컨트롤러가 존재하는 한 변수가 메모리에서 머무르게.