티스토리 뷰

728x90
반응형


~~~.h 파일

@property ( nonatomic, retain ) UITextField* notesField;

@property ( nonatomic, retain ) UIPickerView* tweetPicker;


~~~.m파일

@synthesize tweetPicker, notesField; //이렇게 콤마 찍고 두개를 연달아 써도 된다.


@property라고 선언하는 것은 컴파일러에 프로퍼티가 있다는 것만 알려줄뿐 어떻게 하라는 것은 얘기하지 않는다.

구현파일에서 @sythesize 키워드로 지정해야만 컴파일러가 getter, setter를 자동으로 만들어주게 된다.

여기서 setter도 선언된 @property 속성에 따라 만들어주게 된다.


readonly- 프로퍼티가 변경되지 않도록 할때 사용. 읽기 전용 따라서 세터를 자동생성해 주지는 않는다.

retain - 객체의 값을 다룰때 주로 사용. 컴파일러는 입력값으로 쓰이는 객체를 리테인( retain)하고, 이전객체는 릴리스한다.

readwrite - 프로퍼티를 변경할 필요가 있을때 사용한다. 컴파일러는 게터와 세터를 생성해 준다. 이것이 기본값(default).

copy - 전달된 원래의 값이 변경되지 않도록 할때 사용한다. 예를 들어 배열을 프로퍼티로 할당할 때, 프로퍼티로 지정된 다음에도

          원래 배열에 있던 값을 보존하고자 하는 경우에 쓰인다. 객체를 복제하고 복제된 프로퍼티에 지정

assign - int나 float와 같은 기본형을 다룰때 사용한다. 컴파일러는 세터를 단순히 "myField=value"와 같은 할당문으로 만든다.

            이것이 기본값 그러나 대부분 객체를 다룰 때에는 메모리 관리 측면에서 적절치 않다.


nonatomic 키워드 - 기본적으로 생성된 접근자 메소드는 프로퍼티의 값을 변경할 때 뮤텍스(mutex)를 사용하도록 되어 있어서

                            멀티쓰레드 환경에서도 안전하게 실행할 수 있다. 이런 특성을 atomic(원자성)이라고 한다. 

                            그러나 클래스가 멀티쓰레드 환경에서 실행되는 것이 아니라면 이것은 낭비라고 할 수 있다.

                            nonatomic 으로 속성을 선언하면 불필요한 뮤텍스 관련 처리를 하지 않도록 할 수 있다.



아주 쉽게 잘 설명해놓으신 분이 계신다~ ㅎㅎㅎ

http://pc-to-mac-changer.blogspot.kr/2012/04/objective-c-property-atomic-nonatomic.html

                            

728x90
반응형

'Programming language > iOS & objective-C' 카테고리의 다른 글

NSDictionary~ +(id)dictionaryWithObjectsAndKeys:~~~~~  (0) 2012.11.09
UIProgress example  (0) 2012.11.08
iOS6 변화 된것 참조  (0) 2012.10.19
objective-c 기초 1  (0) 2012.03.22
objective-c 튜토 한글 번역  (0) 2012.03.22
댓글