Swift/etc 2

[Swift] 메모리를 참조하는 방법(strong, weak, unowned)

강한 참조 (Strong Reference) 해당 인스턴스의 소유권을 가진다. 자신이 참조하는 인스턴스의 retain count를 증가시킨다. 값 지정 시점에 retain이 되고 참조가 종료되는 시점에 release가 된다. 선언할 때 아무것도 적어주지 않으면 default로 strong이 된다.var test = Test() // retain count 1 증가 test = nil // retain count가 1 감소되어 0이 되면서 메모리 해제됨 약한 참조 (Weak reference) 해당 인스턴스의 소유권을 가지지 않고, 주소값만을 가지고 있는 포인터 개념이다. 자신이 참조하는 인스턴스의 retain count를 증가시키지 않는다. release도 발생시키지 않는다. 자신이 참조는 하지만 wea..

Swift/etc 2021.03.10

[Swift] ARC란?

출처 value type과 달리 reference type은 하나의 인스턴스가 참조를 통해 여러곳에서 접근하기 때문에 언제 메모리에서 해제 되는지가 중요하다. 인스턴스가 적절한 시점에 메모리에서 해제되지 않으면 한정적인 메모리 자원을 낭비하게 되고, 이는 성능저하로 이어진다 Swift는 메모리 사용을 관리하기 위해 메모리 관리 기법인 ARC를 사용한다. ARC(automatic reference counting) 자동으로 메모리를 관리해주는 방식. 더이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작한다. 인스턴스가 언제 메모리에서 해제되어야 할지를 컴파일과 동시에 결정함 ARC의 장단점 장점 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있어서 인스턴스가 언제 메모리에서 해제될지..

Swift/etc 2021.03.08