2011-11-01 3 views

답변

7

예, 하나의주의 사항 : iOS 4.x를 배포 대상으로 사용하는 경우 이전 런타임에서 ARC로 컴파일 된 코드를 처리하려면 추가 라이브러리가 필요합니다. ARC를 사용하여 구축 된 응용 프로그램의 경우 응용 프로그램과 함께 패키지로 제공됩니다. 이것은 ARC가 아닌 응용 프로그램에서 ARC로 컴파일 된 라이브러리를 사용하는 경우에는 포함되지 않습니다.

응용 프로그램의 기타 링커 플래그에 -fobjc-arc을 추가하여 이전 OS 버전의 런타임 문제를 피하기 위해이 라이브러리를 비 ARC 응용 프로그램에 수동으로 연결할 수 있습니다.

자세한 내용은 this Apple Developer Forums thread을 참조하십시오.

+0

나는 실제로 프로젝트에서 그걸 시도했지만 도움이되지 않았다. http://stackoverflow.com/questions/8375233/ld-duplicate-symbol-objc-retainedobject-on-ios-4-3-but-not-on-ios-5-0 –

+0

런타임 문제가 발생하는 이유는 무엇입니까? ARC가 컴파일하는 중입니까? –

+0

@ZakyGerman - ARC는 올바른 지점에'-retain'과'-release'를 삽입하는 것 이상을 수행하고, 새로운'@ autoreleasepool'과 같은 것을 소개합니다. 그래서 약간의 런타임 도움이 필요합니다. 이것은 iOS 5.0에 내장되어 있지만 4.x에는이 하위 호환성 라이브러리가 필요합니다. –

1

괜찮을 것입니다. 라이브러리가 이미 컴파일되었으므로 ARC/NonARC는 더 이상 중요하지 않습니다.

+1

이전 대답과 ARC 사용 정적 라이브러리에 잠재적 인 문제점이 하나 있습니다. –

2

Apple에서 제공하는 접착제 라이브러리를 연결할 수 있습니다 (Brad는 위의 답변에서 말한 것처럼). 그러나 __weak 변수 한정자는 4.3 이하의 운영 체제와 호환되지 않습니다 (여기에서 언급 한대로 : sudo의 설명에서 iOS 5 Best Practice (Release/retain?)).

관련 문제