본문 바로가기
카테고리 없음

[Objective-c]오브젝티브씨 문법 & 개념 정리

by 정석 지향 2021. 5. 27.
반응형

클래스 선언 파일 .h

형식

@interface 클래스명:부모클래스

@end

 

클래스 구현 파일(행위 동작 코두 작성) .m

#import "클래스명.h"

@implementation 클래스명

@end

 

객체 생성 방법 -> [["클래스명" alloc] init];

alloc: 객체 생성

init: 초기화

객체 생성 과정에서 동작해야 하는 코드는 init메소드에서 재정의합니다.

 

문자열 변수 생성

ex) NSString *string1 = @"string1입니다.";

* << 은 객체형 타입을 의미합니다. NSString은 객체형 타입입니다.

 

함수 사용 방법

ex) 위에서 만든 문자열 객체 string1에 length 메소드를 호출합니다 -> [string1 length];

nil에 메소드 호출 시 무시되고, 반환값은 0 또는 nil입니다.

 

 

프로퍼티 생성 시 선언부(.h)파일 @interface 안에 생성시에는 기본적으로 인터널 타입

-@interface 밑 @property로 선언 시 외부에서 접근 가능 -> getter setter 직접 생성 안해도 자동 사용 가능 (2012년도부터 자동으로 됨 기존에는 synthesize사용 했어야함)

 

@property를 구현부(.m)에서 접근 시 _(언더바)가 필요하지만 @synthesize 사용으로 네이밍 싱크를 맞추어 _(언더바) 사용 안할 수 있음

@implementation Test
@synthesize name = _name;

 

 

 

@class

- 사용하려고하는 클래스에서만 헤더를 import, 단순히 선언만 하고 구상 클래스에서 헤더를 import를 하여 사용하려고 하는 경우에 사용

  • 포인터를 참조만 할 수 있으며 클래스의 메소드들은 사용하지 못함

 

nonatomic

atomic과 ObjectiveC

ObjectiveC Property는 기본적으로 atomic으로 선언됩니다. 다만, atomic property는 위에서 본 것처럼 atomic 데이터가 변경 도중에 접근하지 못 하도록 lock이 걸리기 때문에 property 접근의 성능이 느려집니다. 그래서 멀티 쓰레드에서 접근될 이유가 없는 많은 ObjectiveC Property(반드시 메인스레드에서 업데이트 해야하는 View Property 같은 것들)에는 nonatomic annotation을 설정하는 것이 좋습니다.

 

 

반응형