본문 바로가기

개발도구/iOS - 아이폰 개발

[아이폰-펌] retain, release, autorelease, dealloc 에러 / ARC (Automatic Reference Counting)

펌 : http://blog.appgate.in/18


iOS5의 ARC(Automatic Reference Counting)은 Objective-C 객체의 메모리 관리를 자동으로 관리하는 "Compiler" 속성이다. 이 속성을 사용하면 예전에 쓰던 retain, release, autorelease, dealloc 코드는 사용할 수 없게되며 이들이 하던 역할을 컴파일 시점에 알아서 처리해준다. ARC가 허용하지 않는 코드를 사용하면 아래와 같은 에러를 뿜어낸다.


그럼, ARC을 사용하게 되면 기존 오픈소스를 사용하는데 문제가 되지 않을까 걱정을 할 수 있는데 다음과 같이 해결하면 된다.
  • 이미 컴파일된 오픈소스 라이브러리 사용
  • ARC옵션을 끈 다른 라이브러리 프로젝트를 생성해서 사용
  • 오픈소스 파일별로 ARC옵션을 끄고 사용
ARC옵션을 끄는 방법은 프로젝트 생성할 때 옵션을 끄거나 


프로젝트 Build Settings에서 Objective-C Automatic Reference Counting을 NO로 바꾸거나


프로젝트 Build Phases에서 옵션을 끌 파일들을 선택한 후 엔터를 치고 "-fno-objc-arc" 옵션을 적용해주면 된다.