제목에서 보다시피 MRC/MMR은 과거 Objective-C에서 사용하던 메모리 관리 기법이다.
ARC의 RC는 Reference Counting이지만 MRC의 RC는 Retain Counting이라고 한다.
소들이 님의 블로그를 보고 이해한 결과
TestClass *test = [[TestClass alloc] init];
라고 선언을 하면 alloc을 통해 힙 영역에 자동적으로 할당이 되고 Retain Count는 1 증가한다.
그 후
TestClass *test2 = test;
test2에 test 주소값을 복사하는 경우 Retain Count이 증가하지 않는다.!!!!
이런 것 때문에 수동 메모리 관리 기법이라고 한다..
Retain Count를 올려주기 위해
TestClass *test2 = test;
[test retain];
retain을 직접 해주어야 Retain Count는 증가한다.
메모리를 반납하여 Retain Count를 감소시키기 위해서는 release라는 메서드를 사용한다.
test2 = nil;
nil 값으로 설정한다고 해서 Retain Count는 절대 감소하지 않는다.
[test2 release];
release를 하면 Retain Count는 감소하게 된다. 이때 먼저 nil을 설정하는 경우 release를 할 수 없으므로 release를 먼저 한 이후에 nil값으로 끊어야 한다.
정말 불편한 메모리 기법이다...
'iOS > 문법' 카테고리의 다른 글
Property Observer (0) | 2023.02.11 |
---|---|
Property (0) | 2023.02.11 |
Swift 문법과 친해지기 - Strong, Weak, unowned, 순환 참조 (0) | 2023.01.07 |
Swift 문법과 친해지기 - ARC(Automatic Reference Counting) (0) | 2023.01.07 |
Swift 문법과 친해지기 - 패턴 (0) | 2023.01.06 |