제목이 내 질문을 잘 설명한다고 생각합니다. 현재 개인적인 필요에 맞는 작은 프레임 워크를 만들고 ARC로 빌드하는 방법에 대해 생각해 보았습니다. (가능하면 가능합니까?) 오래된 프로젝트에서 사용했습니다. ARC 전에 지어 졌나요?ARC 프레임 워크를 빌드하고 비 ARC 프로젝트에서 사용할 수 있습니까?
답변
예, 하나의주의 사항 : iOS 4.x를 배포 대상으로 사용하는 경우 이전 런타임에서 ARC로 컴파일 된 코드를 처리하려면 추가 라이브러리가 필요합니다. ARC를 사용하여 구축 된 응용 프로그램의 경우 응용 프로그램과 함께 패키지로 제공됩니다. 이것은 ARC가 아닌 응용 프로그램에서 ARC로 컴파일 된 라이브러리를 사용하는 경우에는 포함되지 않습니다.
응용 프로그램의 기타 링커 플래그에 -fobjc-arc
을 추가하여 이전 OS 버전의 런타임 문제를 피하기 위해이 라이브러리를 비 ARC 응용 프로그램에 수동으로 연결할 수 있습니다.
자세한 내용은 this Apple Developer Forums thread을 참조하십시오.
괜찮을 것입니다. 라이브러리가 이미 컴파일되었으므로 ARC/NonARC는 더 이상 중요하지 않습니다.
이전 대답과 ARC 사용 정적 라이브러리에 잠재적 인 문제점이 하나 있습니다. –
Apple에서 제공하는 접착제 라이브러리를 연결할 수 있습니다 (Brad는 위의 답변에서 말한 것처럼). 그러나 __weak 변수 한정자는 4.3 이하의 운영 체제와 호환되지 않습니다 (여기에서 언급 한대로 : sudo의 설명에서 iOS 5 Best Practice (Release/retain?)).
나는 실제로 프로젝트에서 그걸 시도했지만 도움이되지 않았다. http://stackoverflow.com/questions/8375233/ld-duplicate-symbol-objc-retainedobject-on-ios-4-3-but-not-on-ios-5-0 –
런타임 문제가 발생하는 이유는 무엇입니까? ARC가 컴파일하는 중입니까? –
@ZakyGerman - ARC는 올바른 지점에'-retain'과'-release'를 삽입하는 것 이상을 수행하고, 새로운'@ autoreleasepool'과 같은 것을 소개합니다. 그래서 약간의 런타임 도움이 필요합니다. 이것은 iOS 5.0에 내장되어 있지만 4.x에는이 하위 호환성 라이브러리가 필요합니다. –