일단 궁극적으로 Swift에서 활용되는 건 ARC이다. But 보기 전에 옵제씨 사용 틀딱 시절엔 힙 영역에 어케 할당하고 해제했는지를 먼저 보려고 한다. 그 이유는 ARC를 왜? 써야 되는지를 알려면 불편함을 느껴야 되기 때문! 그럼 MRC에 대해 알아보장~
아 하라고 먹어야 된다고 그래야 잘 이해한다고
RC는 Retain Counter(MRC에서) 에 준말이며, 참조횟수이다!
Retain Counter 즉 참조횟수라는 말이 딱 들으면, 우리 메모리를 열심히 공부하신~ 사람들에게 처음 드는 생각은 “아 참조타입인 인스턴스가 Heap에 할당되는 횟수를 말하는건가?” 라고 생각을 하신다면 진짜 씹베스트임다! (모르겠으면 여기로 함수의 실행의 메모리 구조)
MRC에서는 개발자기 직접 참조 횟수를 count 해줘야된다.
⇒ 이때 우리는 .retainCount를 통해 해당 인스턴스가 힙의 몇 번 할당이 되었는지 알 수가 있다.
그러면 이제부터 옵제씨에서 어떻게 힙에 할당된 참조 횟수를 어떻게 관리하는지 알아보자! 아래 메소드는 인스턴스를 새로 생성할 때 사용하는 메소든데.. 음 대충 보고 넘어가자
alloc | new | copy | mutableCopy |
---|
우리가 처음 인스턴스를 새로 생성하면 자동으로 RC는 1 증가하게 된다.
//아래와 같은 방식으로 인스턴스를 새로 생성할 수 있다.
TestClass *test = [[TestClass alloc] init];
엥 그러면 수동적으로 증가하는게 아니자나..?
retain 메서드를 사용해서 RC를 수동적으로 증가시킬 수 있다. 즉. retain count 증가를 통해 현재 Scope에서 객체가 유지되는것을 보장한다.