본문 바로가기

iOS

[iOS] @property 값들의 차이 atomic, nonatomic 등등


ARC 환경에서의 설정값들

- atomic

멀티 쓰레드 환경에서 여러 쓰레드가 경쟁적으로 접근하는 프로퍼티를 사용할때 설정하는 값이다.

한 쓰레드가 사용중이면 다른 쓰레드가 접근하지 못하도록 lock을 걸어 값의 변경을 막기위해 사용한다. 

즉 Thread Safe 를 위한 설정값


- nonatomic

위의 atomic을 사용해야 하는 경우가 아닐때 사용한다.


-strong

강한 참조

retain과 동일하다고 보면 된다.


-weak

약한 참조

assign 과 비슷하다고 한다.

weak의 경우 객체가 없을시 자동으로 포인터에 nil이 대입된다.

여러군데에서 사용되는 객체의 경우 strong으로 해야 한다. weak으로 하면 어디서든 포인터가 nil이 될 수 있기 때문.




* 밑의 설정값들은 ARC를 사용할땐 사용해선 안된다.


-retain

말그대로 메모리를 할당

release로 해제를 시켜줘야 한다.


-assign

단순한 값의 대입

int, float, BOOL등의 타입에 사용하기 적합하다.


-copy

도저히 뭔지 모르겠다 Orz