드로잉 관련 솔루션을 개발하다가 iOS 4.3 지원이 요구사항 항목에 있었습니다.


그간 개발을 서버사이드와 웹 위주로 개발하다 이번에 모바일 + Drawing 을 접하다 보니


겪는 시행 착오가 굉장히 많습니다... 힘드네요 ㅎㅎ



iPad Air 에 얼마전 iOS 7.1 까지 릴리즈 된 이 시점에서 iOS 5, 6, 7 을 시원하게 이상없이 구현하고 


iOS 4.3 iPad 1에 러닝 하자마자 아래처럼 just leaking 관련 오류가 나는 것을 확인하였습니다. 





많은 분들이 알고 계시겠지만 ARC 환경에서 사용자가 NSAutoreleasePool 을 직접 선언 할 수도 없고 


retain, release, autorelease 등의 메세지를 호출 할 수 없습니다. 



제가 구현한 소스중에서는 NSThread 를 이용한 멀티스레드 구현 코드가 있었습니다.




위와 같은 코드가 iOS 5.x 이상에서는 문제가 발생하지 않았습니다. 


아마도 ARC 에 의해 자동으로 스레드로 실행된 메소드가 종료되는 시점에 release 되는 것 같습니다. 


하지만 ARC 가 iOS 4.3 으로 Develoment Target 을 설정하면 올바르게 동작 되지 않는 것인지 


어떠한 이유에서 해당 부분이 just leaking 에러를 발생시킵니다. 




따라서 아래처럼 @autorelease 키워드를 이용하여 스레드로 동작되는 코드구역을 감싸주고 에러를 해결하였습니다.


정확한 문서를 볼 수 있으면 좋겠지만 아직 자료를 구하지 못하였습니다. 






아직도 iOS 4.x 지원을 위해 고군분투 하시는 분들께 건투를 빕니다.. 




블로그 이미지

Tablo@

leeyw2355@gmail.com