- NSAutoreleasePool
- MRC에서 사용하는 autorelease 메시지를 받은 객체들을 모아두는 풀
- 풀이 메모리에서 해제(drain, release)될 때 풀에 포함된 모든 객체들은 release 메시지를 받음
- 풀은 release 메시지를 한번만 보내기 때문에, retain count가 2인 객체는 살아있음
- 기존 풀에 새로운 풀 생성
1) 기존 풀에 새로운 풀을 생성 할 경우 기존 풀 스택의 맨 위에 추가
2) 이후 어떤 객체가 autorelease 메시지를 받게 된다면, 그 객체는 최 상단에 포함된 풀에 추가
- drain VS release
1) Gargage Collection을 지원하지 않는 경우(iOS) drain은 release와 같음
2) Gargage Collection을 지원 할 경우 drain은 pool의 모든 객체 release, 필요에 따라 시스템에서 pool 수거 - @autorelease block
- ARC에서 NSAutoreleasePool을 대체하기 위해 생김(ARC, MRC 모두 사용 가능)
'프로그래밍 > iOS' 카테고리의 다른 글
Run Loop (0) | 2017.04.12 |
---|---|
NSHashTable (0) | 2017.04.11 |
iOS 식별자(identifier) (2) | 2017.04.07 |
NSURL의 속성 (0) | 2017.04.07 |
nil, Nil, null, NSNull의 차이 (0) | 2017.04.06 |