Object-C의 접근자 메서드(accessor method)에 대해서

5
Object-C 의 접접접 접접접 (accessor method) 접접접

description

Object-C의 접근자 메서드

Transcript of Object-C의 접근자 메서드(accessor method)에 대해서

Page 1: Object-C의 접근자 메서드(accessor method)에 대해서

Object-C 의 접근자 메서드(accessor method)

김명연

Page 2: Object-C의 접근자 메서드(accessor method)에 대해서

@property

Objective-C 2.0 에서부터는 @property 지시어를 사용해서 getter 와 setter 에 대한 코드를 자동으로 생성할 수 있다 .

Page 3: Object-C의 접근자 메서드(accessor method)에 대해서

property 속성readwrite - 기본동작으로 getter 와 setter 를 모두 만든다 . readonly - getter 만 생성 . 값을 할당하려고 하면 컴파일 오류가 발생한다 .

assign - 기본동작이며 객체를 소유할 필요가 없을 때 사용 .retain - assign 과 비슷하지만 레퍼런스 카운트를 증가시킨다 . 포인터객체를 할당할 경우에는 외부에서 객체가 release 되어 파괴된 객체를 참조하는 문제를 막기 위해서 클래스가 멤버객체를 소유하도록 reference count 를 증가시킨다 .

copy - 할당하는데 객체의 복사본을 사용 . 포인터객체의 경우 reference 값이 바뀌어 property 의 값이 바뀌는 걸 막기 위해 setter 에서 복사본을 만들어서 할당하며 copy 를 사용하려면 NSCopying 프로토콜을 구현한 객체에서만 유효하다 .

nonatomic - Accessor 들을 non-atomic 으로 지정한다 . 멀티프로세서 환경해서 지정이 필요함 . Mutually exclusive 락으로 접근자 메서드를 보호하지 말라고 지시하는 것이다 . 기본동작은 atomic 이다 .

Page 4: Object-C의 접근자 메서드(accessor method)에 대해서

@synthesize

@property 를 사용해서 property 들에 대한 getter 와 setter 를 선언했으면 @implementation 에서 실제 코드를 추가해 주어야 한다 . @property 를 사용한 것은 단지 컴파일러가 @imple-mentation 에서 getter 와 setter Method 가 작성되었다는 것을 지시하는 것이다 .

Page 5: Object-C의 접근자 메서드(accessor method)에 대해서

@dynamic

@dynamic 지시어는 @synthesize 대신에 사용할 수 있으며 getter 와 set-ter 메서드가 클래스 자신에 의해서 구현되지 않고 ( 슈퍼클래스같은 ) 다른 어딘가에 구현되어 있다고 알려주어 getter/setter 가 구현되어 있지 않아도 컴파일러 경고를 받지 않게 해준다 .