반응형

프라퍼티의 어트리뷰트에는 3종류의 값을 설정할 수 있다.

먼저, setter의 동작방식이 있다. 프라퍼티가 최종적으로 넘겨진 매개변수를 가지는 방식이다.


assign은 넘어온 값을 그대로 가진다. 주로 int, float이나 BOOL 같은 스칼라값을 다루는 프라터티가 assign방식을 사용한다.


retain은 넘어온 오브젝트의 리테인 카운트를 1 증가시켜 보관하며 이전 값은 release된다. 코코아 오브젝트는 대부분 retain방식을 사용하게 된다.


copy는 넘어온 매겨변수를 복사해서 보관하며 이전 값은 release된다. 프로그램의 로직 상 필요한 경우에는 매개변수를 copy를 사용하여 오브젝트를 복사해 사용할 수 있다. 이때 주의할 점은 매개변수로 넘어온오브젝트가 NSCopying프로토콜을 준수하는 오브젝트여야 한다는 것이다. 대부분의 코코아 오브젝트는 NSCopying 프로토콜을 준수하고 있지만 사용자가 만드는 커스텀 클래스나 CoreData의 오브젝트들은 NSCopying프로토콜을 기본적으로 준수하지 않기 때문에 직접 copyWithZone:메소드 구현을 통해 NSCopying 프로토콜을 구현해야 한다.


두번째로 nonatomic이 있다 (atomic 어트리뷰트는 사용하지 않는다).

nonatomic이 보다 리소스를 적게 소모하지만 프라퍼티에 접근하는 모든 메소드들이 쓰레드를 사용하지 않는다는 보장이 있지 않은 이상 기본값인 atomic을 사용하는 것이 좋다.


마지막으로 readwrite와 readonly가 있다.

글자 그대로 읽기만 할 수 있는 프라퍼티와 읽고 쓸 수 있는 프로퍼티를 만드는 설정이다. readonly로 설정되면 setter가 제공되지 않고 getter만 제공된다.

반응형

'IPHONE' 카테고리의 다른 글

UIColor 유용한 카테고리.  (0) 2013.10.17
ios Localization.  (0) 2013.10.11
XCode4 단축키.  (0) 2013.09.12
아카이브에 저장하고 불러 오기 샘플 코드.  (0) 2013.09.04
Local Notification  (0) 2013.07.10
Posted by 컴스터
,