2. ARC 소개
1. ARC는 Xcode 4.2, iOS4, iOS5에서 사용가능
(단, iOS4에서는 Weak 지원하지 않음)
2. 컴파일 시에 자동으로 적절한 위치에 retain, release, autorelease와
같은 메모리 관리와 관련된 메소드를 추가 함.
3. 가비지 컬렉터와 유사한 기능을 제공하지만 가비지 컬렉터는 아님
2
3. 새로운 Rule
1. retain, release, retainCount, autorelease 사용 불가능
2. @selector(retain), @selector(release) 사용 불가능
3. Dealloc 메소드에서 [super dealloc] 호출 X
4. id와 void* 같은 암시적 형 변환 불가능
5. NSAutorelease 사용 불가능 @autoreleasepool{} 사용
3
4. 새로운 Rule
1. strong : 기본 값(묵시적)
2. weak : zeroing weak reference. 해제되면 nil이 된다.
3. unsafe_unretained : weak reference. 대상 객체가 해제되면 댕글링
포인터(dangling pointer)가 된다.
4. autoreleasing : id * 형식의 인수가 리턴 시 자동적으로 해제되도록
지정된다.
4
5. Strong Reference
Strong Reference
1. strong 키워드는 retain과 비슷하다.
2. 해당 클래스가 소유하는 멤버변수
3. 해당 클래스의 오브젝트가 메모리에서 해제되지 않는 한 해당 오브젝트의
strong 멤버는 절대로 메모리 상에서 해제되지 않는다.
4. IB에서 File’s Owner와 nil 파일의 최상위 객체들은 strong
5
10. Weak Reference
Weak Reference
1. weak의 경우는 assign 과 비슷하면서도 다르다.
2. weak가 붙은 property는 해당 메모리가 해제되면 자동으로 nil로 초기화 된
다.
3. 인터페이스 빌더에서 연결된 IBOutlet 등에서 주로 사용
4. strong과 반대로 weak는 해당 클래스의 소유가 아님.
10