Swift 공식문서 읽기...Day23

김민종·2021년 9월 10일
0

Swift Doc

목록 보기
23/26

Automatic Reference Counting

스위프트는 앱의 메모리를 추적 및 관리하는 자동참조계수를 사용한다. ARC는 인스턴스가 더 이상 필요 없을 때 사용한 메모리를 자동으로 해제한다.

How ARC Works
매번 클래스의 새로운 인스턴스를 만들면 ARC는 인스턴스 정보를 메모리에 저장하기 위해 할당한다. 더이상 필요가 없을 때 사용한 메모리를 해제하고 다른 목적을 위해 사용한다. 하지만 만약 사용중에 인스턴스 할당 해제를 한다면 속성접근이나 메소드 호출도 불가능하게 된다. 인스턴스가 사라지지 않게 하기 위해 ARC는 현재 각 클래스 인스턴스를 참조하기 위해 추적한다. 적어도 하나이상의 참조가 있다면 인스턴스를 해지하지 않는다.

Resolving Strong Reference Cycles Between Class Instances
스위프트의 강한 순환 참조를 해결할 수있는 방법으로 약한 참조와 미소유 참조가 있다. 이는 강한 순환참조를 유지할 필요 없이 참조한다.

Weak References
약한참조는 다른 인스턴스를 강하게 참조하지 않으며 강한순환참조를 하는 것을 방지한다. 이때 키워드는 weak를 사용한다. 약한참조는 nil값을 갖는것을 허락한다.

Unowned References
미소유참조역시 인스턴스에 대한 참조를 강하게 하지 않는다. 이때 unowned키워드를 사용한다.

Unowned References and Implicitly Unwrapped Optional Properties
초기화가 되면 nil값을 가지고 있더라도 미소유 속성을 가진 클래스와 암시적 언래핑된 옵셔널 속성을 가진 다른 클래스와 결합해야 한다.

Strong Reference Cycles for Closures
클래스 인스턴스 속성에 클로저를 할당하면 강력 참조 순환이 생긴다.
강력참조 순환은 클로저가 참조타입이기 때문에 발생한다.

Resolving Strong Reference Cycles for Closures
클로저와 클래스의 강력참조순환은 클로저에서 정의의 획득목록을 정의하여 해결해야 한다. 획득목록은 클로저 내에서 하나 이상의 참조타입을 획들할 때 사용되는 규칙이다.

profile
신입 ios개발자입니다!

0개의 댓글