1.NSMutableString의 copy
결과가 어떻게 될까?
예상한대로 두 문자열의 메모리 주소는 다르다. copy했기 때문에 stringA 문자열의 복사본을 다른 메모리 주소에 만들고 그 주소를 stringB에 대입했기 때문이다.
2. NSString의 copy
결과가 어떻게 될까?
예상과 다르게 두 문자열의 메모리 주소는 같다. retain 한것과 결과가 똑같을 것이다. @"aa"의 retainCount도 2가 되었을것이다. 왜일까?
NSString은 불변객체이기 때문에 @"aa" 라는 문자열 상수가 변경될 일이 없다. 그래서 굳이 복사본을 따로 만들어서 메모리를 낭비시키지 않고 retain과 똑같이 동작하도록 구현한 것이다.
*이해를 돕기 위해서 NSString과 NSMutableString을 예로 든것이다. 불변, 가변객체 구조를 가지고 있는 NSArray, NSMutableArray, NSDictionary, NSMutableDictionary 등도 위와 같은 메커니즘으로 동작한다.
'IOS > Objective-C' 카테고리의 다른 글
Key-Value Coding(1) (0) | 2016.12.07 |
---|---|
Collections의 weak reference (0) | 2016.10.02 |
멀티 스레드 프로그램 (0) | 2015.08.23 |
메소드의 동적 결합 (0) | 2015.08.22 |
Property List (0) | 2015.08.20 |