일단 궁극적으로 Swift에서 활용되는 건 ARC이다. But 보기 전에 옵제씨 사용 틀딱 시절엔 힙 영역에 어케 할당하고 해제했는지를 먼저 보려고 한다. 그 이유는 ARC를 왜? 써야 되는지를 알려면 불편함을 느껴야 되기 때문! 그럼 MRC에 대해 알아보장~

아 하라고 먹어야 된다고 그래야 잘 이해한다고

아 하라고 먹어야 된다고 그래야 잘 이해한다고

1. MRC

1-1. RC란?

RC는 Retain Counter(MRC에서) 에 준말이며, 참조횟수이다!

Retain Counter 즉 참조횟수라는 말이 딱 들으면, 우리 메모리를 열심히 공부하신~ 사람들에게 처음 드는 생각은 “아 참조타입인 인스턴스가 Heap에 할당되는 횟수를 말하는건가?” 라고 생각을 하신다면 진짜 씹베스트임다! (모르겠으면 여기로 함수의 실행의 메모리 구조)

1-2. retianCount

MRC에서는 개발자기 직접 참조 횟수를 count 해줘야된다.

⇒ 이때 우리는 .retainCount를 통해 해당 인스턴스가 힙의 몇 번 할당이 되었는지 알 수가 있다.

2. MRC로 RC 다루기

그러면 이제부터 옵제씨에서 어떻게 힙에 할당된 참조 횟수를 어떻게 관리하는지 알아보자! 아래 메소드는 인스턴스를 새로 생성할 때 사용하는 메소든데.. 음 대충 보고 넘어가자

alloc new copy mutableCopy

2-1. 인스턴스를 새로 생성할 때

우리가 처음 인스턴스를 새로 생성하면 자동으로 RC는 1 증가하게 된다.

//아래와 같은 방식으로 인스턴스를 새로 생성할 수 있다.
TestClass *test = [[TestClass alloc] init];

Untitled

엥 그러면 수동적으로 증가하는게 아니자나..?

2-2. retain 메소드를 사용할 때

retain 메서드를 사용해서 RC를 수동적으로 증가시킬 수 있다. 즉. retain count 증가를 통해 현재 Scope에서 객체가 유지되는것을 보장한다.