objective-c 를 사용해서 코딩을 하다 보면
심심치 않게 다음 구문들을 보게 된다.
@property
@synthesize
위의 2개의 것이 어떤 기능을 하는지 알아 보자.
간단히 요약해서 프로퍼티의 기능은
변수들의 속성을 정해 주는 기능을 한다.
property 는 헤더에서 보통 아래와 같은 방식으로 선언 하게 되는데
@property(nonatomic, retain) NSString* test;
property 의 값들의 종류는 다음과 같다.
– nonatomic, atomic —
기본값은 atomic 이지만,
이걸로 정해 놓게 되면 수정을 할때
lock, unlock 을 사용하면서
객체를 보호 하는 기능을 하게 되므로
속도가 조금 느려 질 수 있다는 단점이 있다.
따라서 속도에 조금 민감하고 동기화가 굳이 필요하지 않다면
보통 nonatomic 을 사용 한다.
– assign, retain, copy —
객체를 선언하고 객체에 값을 세팅 할 때
적용할 속성에 대한 값들 이다.
assign 을 할 경우에는 세팅 할 때 주소값만 가지고 오고
retain 을 할 경우에는 기존값을 release 하고
새로 받은걸 retain 한다.
또 copy 로하면 기존값을 release 하고
새로 받은걸 copy 한다.
– readonly —
말 그대로 readonly 를 적용 하면
세팅이 안되고 읽는 것만 가능하다.
이 속성은 선택 안해도 상관 없다.
property 로 선언해 놓은 객체를
이제 .mm 에 와서 연결 시켜 주는게 synthesize 이다.
보통 아래와 같이 연결해 준다.
@synthesize test;
신디사이즈의 기능은 대략적으로 다음과 같다.
** 내부에 전역 변수 선언 **
** setter, getter 함수 생성 **
그렇기 때문에 따로 귀찮게 setter, getter 함수를
만들지 않아도 되고 각각의 객체에 대해서
속성을 줄 수 있다.
또, property 를 쓰지 않으면
클래스 내부에서만 사용 가능 하다.
'Programming > iOS' 카테고리의 다른 글
[iOS] UINavigationController 강제로 회전 시키는 방법 (0) | 2015.03.27 |
---|---|
[iOS] XCode 에서 맨 위에 __MyCompanyName__ 변경하기 (0) | 2015.03.27 |
[iOS] 앱스토어 영수증 검증 (0) | 2015.03.27 |
[iOS] pathForResource: 사용할 때 nil 로 얻어 오는 문제 (0) | 2015.03.27 |
[iOS] 스크린 사이즈 얻어오는 방법 (0) | 2015.03.27 |