"클래스의 새 인스턴스를 생성할 때마다, ARC는 그 인스턴스에 대한 정보를 저장하기 위해 메모리의 일부를 할당합니다. 이 메모리에는 인스턴스의 타입과 그 인스턴스와 연관된 저장된 프로퍼티의 값들이 포함됩니다."
🙌 위 문장은 "클래스 인스턴스의 메모리 할당" 에 대한 설명입니다.
"또한, 인스턴스가 더 이상 필요하지 않을 때, ARC는 그 인스턴스에 사용된 메모리를 해제하여 다른 목적으로 사용할 수 있도록 합니다. 이는 더 이상 필요하지 않은 클래스 인스턴스가 메모리 공간을 차지하지 않도록 보장합니다."
🙌 위 문장은 "인스턴스 사용 종료 시 메모리 해제" 에 대한 설명입니다.
인스턴스가 더이상 필요하지 않게 되면, ARC는 해당 인스턴스가 사용하던 메모리를 해제하여 다른 용도로 사용할 수 있도록 합니다. 이는 더 이상 필요하지 않은 클래스 인스턴스가 메모리를 차지하지 않도록 보장합니다.
"그러나, 만약 ARC가 여전히 사용 중인 인스턴스를 해제한다면, 그 인스턴스의 프로퍼티에 접근하거나 메소드를 호출하는 것은 더 이상 가능하지 않게됩니다. 실제로 만약, 개발자가 그 인스턴스에 접근하려고 시도한다면, 개발자의 앱은 아마도 충돌할 것입니다."
🙌 위 문장은 사용 중인 인스턴스의 해제 방지에 대하여 설명합니다.
만약 ARC가 여전히 사용 중인 인스턴스를 해제한다면, 그 인스턴스의 프로퍼티에 접근하거나 메소드를 호출하는 것이 불가능해질 것입니다. 실제로 이런 상황에서 인스턴스에 접근하려고 시도한다면 애플리케이션이 충돌할 가능성이 높습니다.
"인스턴스가 여전히 필요한 동안 사라지지 않도록 하기 위해, ARC는 현재 각 클래스 인스턴스를 참조하고 있는 프로퍼티, 상수 및 변수의 수를 추적합니다. ARC는 해당 인스턴스에 대한 적어도 하나의 활성 참조가 여전히 존재하는 한 그 인스턴스를 해제하지 않을 것입니다."
🙌 위 문장은 참조 추적에 대한 내용입니다.
인스턴스가 여전히 필요한 동안에는 사라지지 않도록, ARC는 각 클래스 인스턴스를 참조하는 프로퍼티, 상수 및 변수의 수를 추적합니다. ARC는 해당 인스턴스에 대한 활성 참조가 적어도 하나 이상 존재하는 한 인스턴스를 해제하지 않습니다.
"이를 가능하게 하기 위해, 클래스 인스턴스를 프로퍼티, 상수 또는 변수에 할당할 때마다, 그 프로퍼티, 상수, 또는 변수는 인스턴스에 대한 강한 참조를 만듭니다. 이 참조를 '강한 참조'라고 부르는 이유는, 그것이 인스턴스를 확고하게 유지하고, 강한 참조가 남아 있는 한 그 인스턴스가 해제되지 않도록 하기 때문입니다."
🙌 위 문장은 강한 참조에 대한 내용입니다.
클래스 인스턴스를 프로퍼티, 상수 또는 변수에 할당할 때, 해당 프로퍼티, 상수 또는 변수는 인스턴스에 대한 강한 참조를 생성합니다. 이러한 참조를 '강한(strong)' 참조라고 부르는 이유는, 그 참조가 인스턴스를 확실하게 유지하고, 강한 참조가 남아 있는 한 인스턴스가 해제되지 않도록 하기 때문입니다.