Objective-C Property 속성 (attribute)

Reid Byun·2021년 5월 11일

iOS-dev

목록 보기
1/2
post-thumbnail

다양한 속성이 있지만 일단 strong/weak, reatin/assign 의 차이만 적어보자.

일단 arc 를 사용할 경우는 strong/weak
사용 안 할 경우는 retain/assign 을 사용한다.
공통적으로 이들 속성은 retain count 를 증가 시키냐 아니냐만 결정한다.
value 복사, reference 복사가 되는 것과는 전혀 관련이 없다.

strong, retain 의 경우 해당 프라퍼티로 할당된 객체의 retain count 를 증가 시킨다.

weak, assign 의 경우 해당 프라퍼티로 할당된 객체의 retain count 를 증가 시키지 않는다.
다만 해당 객체가 release 됐을 때 weak 프라퍼티에는 자동으로 nil 이 할당되지만
assign 프라퍼티는 release 된 주소를 그대로 가르키고 있다.

객체를 복사할 때
a = b;
이런식으로 하면 레퍼런스 복사만 일어난다.
a = [b copy];
이렇게 해야 객체 자체의 복사가 일어나고, 이것이 가능하려면 b는 NSCopying 프로토콜을 준수하고 있어한다.
만약 b 에 primitive type 이 아닌 프라퍼티들이 있다면 역시 해당 객체들도 NSCopying 프로토콜을 준수해야 안전하게 복사가 될 것이다.
내부 프라퍼티가 NSCopying 을 준수하고 있지 않다면..? (확인 해야함)

profile
Software Engineer for multi-platform.

0개의 댓글