2013-06-08 2 views
0

Objective-C 응용 프로그램에서 C++ 라이브러리를 사용하고 싶습니다. Objective-C++ (.m 대신 .mm 파일)를 사용할 중간 정적 라이브러리가 있습니다. 정적 라이브러리는 iOS 앱에서 사용됩니다.objective-C++ 정적 라이브러리에 ARC를 사용 하시겠습니까?

Objective-C++ 라이브러리에서 ARC를 사용하는 것이 안전합니까? 아니면 Objective-C 응용 프로그램에서 처리해야합니까?

답변

3

TL; DR 응답 : 원하는 것을 선택하십시오. 그러나 둘 모두를 지원하는 것이 좋습니다. ARC를 원한다면 사용하십시오. ARC를 원하지 않으면 사용하지 마십시오. 귀하의 질문에서, 당신은 아주 잘 초보자 수 있습니다 -이 경우에 내가 당신에게 조언을 그냥 수동 메모리 관리를 배울 수 그래서 당신은 알고 무엇을 이해하고 왜 참조 카운팅을 계속하고 다음으로 전환 할 수 있습니다 이후 생산 코드에 ARC를 사용.)


당신이 을 배포하는 경우하면 바이너리 정적 라이브러리 파일 자체 (MyLibrary.a), 그것은 어떤 차이가되지 않습니다. ARC는 이미 컴파일 시간 인 기술이며 (간략히 설명하면 retain, releaseautorelease에 대한 호출 만 삽입되며 런타임시에는 영향을 미치지 않음) . 따라서 일단 코드가 컴파일되면 아무도 ARC를 사용했는지 알 수 없기 때문에 라이브러리 사용자는 그 것에 대해 걱정할 필요가 없습니다. 당신은, 그러나, 라이브러리의 소스 코드를 배포하는 경우

(나는 강력하게 권장한다), 그 사용자는 ARC 아래에 또는없이 사용할 수 있는지 여부를 당신이 그것을 설계 알 필요가있다. 한 번 결정한 후 일관성을 유지하십시오. 사용 용이성 및 작성 용이성을 위해 ARC 코드를 선호하거나 하위 호환성을 위해 비 ARC 코드를 선호 할 수 있습니다. 이상적인 태도는 special macro __has_feature(objc_arc)과 함께 컴파일 타임 기능 감지를 사용하여 ARC 및 비 ARC 컴파일을 모두 지원하는 것입니다.

2

ARC는 컴파일 타임 기능이므로 라이브러리가 ARC를 사용하도록 설계된 경우 라이브러리를 만들 때 활성화해야합니다. 그렇지 않으면 누출이 예상됩니다. Obj-C++ 이건 Obj-C 이건간에 실제적인 차이는 없습니다.

관련 문제