iOS 5로 업그레이드하기로 결정한 경우 코드에서 [myObject retain] 및 [myObject release] 문을 모두 제거해야합니까?
예. 그러나 XCode 4.2에는 새로운 "Objective-C ARC로 마이그레이션"도구 (편집-> 리 팩터 메뉴에 있음)가 포함되어 있습니다. dealloc 호출은 다른 이야기입니다. 주석에서 언급했듯이 clang 참조는 dealloc 메소드를 유지해야한다고 명시합니다.
이론적 근거 : ARC가 인스턴스 변수를 자동으로 파괴하더라도 유지 불가능한 자원 확보와 같은 해제 방법을 작성해야하는 합법적 인 이유가 있습니다. 이러한 방법으로 [super dealloc]을 호출하지 못하는 것은 거의 항상 버그입니다.
새로운 -fobjc-arc 컴파일러 플래그를 사용하여 ARC를 활성화합니다. ARC는 Mac OS X v10.6 및 v10.7 (64 비트 응용 프로그램) 및 iOS 4 및 iOS 5 용 Xcode 4.2에서 지원됩니다 (Mac OS X v10.6 및 iOS 4에서는 약한 참조가 지원되지 않음). Xcode 4.1에서는 ARC 지원이 없습니다.
-
ARC를 사용하여 iOS 5 용 새 앱을 개발하는 경우 일종의 "레트로 호환성"검사를 구현해야합니까? 즉, iOS 버전을 확인하고 그에 따라 통화를 유지 및 해제해야합니까? 기본적으로 ARC는 모든 iOS 버전 또는 iOS 5에서만 사용할 수 있습니까?
ARC는 런타임이 아닌 컴파일 타임에 마법을 수행하기 때문입니다.
ARC는 언제 유지, 해제 및 자동 릴리스를 사용해야하는지 기억할 필요없이 객체의 수명 요구 사항을 평가하고 컴파일 타임에 적절한 메소드 호출을 자동으로 삽입합니다. 컴파일러는 또한 적절한 할당 해제 방법을 생성합니다.
ARC에 대한 추가 정보 : http://clang.llvm.org/docs/AutomaticReferenceCounting.html