2012-06-19 2 views
0

이 질문은 ARC와 비 ARC 코드가 함께 작동하는 방법과 비슷하지만 ARC 그리고 내가 사용해야하는 비 ARC 코드는 실제로 같은 프로젝트에서 온 것입니다. 아래의 세부 정보 :같은 프로젝트의 ARC 및 비 ARC 버전을 모두 사용하십시오 중복 된 심볼 오류가 발생합니다

나는 잠시 동안 내 프로젝트에서 SBJson을 사용하는 ARC를 사용하고 있었고 모든 것이 유용했다. sinaweibosdkforoauth2이 포함되어야한다. Mixing ARC and Non-ARC Code with Static Libraries에 따라 나는 ARC가 가능한 프로젝트에서 비 ARC 프로젝트를 사용할 수 있었고, 나를위한 진짜 문제는 sinaweibosdkforoauth2가 ARC를 지원하지 않는 SBJson을 요청했다는 것이다. (그 당시에는 json-framework on google 코드였다. 중복 된 심볼 (예 : SBJsonWriter)이 발견되었다는 오류가 발생했습니다.

인터넷에서 발견 된 해결책 중 하나는 프로젝트에서 중복 된 클래스 이름의 이름을 바꾸는 것이 었습니다. 제 3 자 소스 코드를 건드리고 싶지 않기 때문에 아직 시도하지 않았습니다. 가능한가? 아니면 완전히 잘못된 방향으로 가고 있습니까?

답변

1

혼란스러워지고 있습니다. 아무것도 ARC가 지원되지 않는 SBJSON을 "요구"할 수 없습니다. ARC 코드는 비 ARC 코드와 전적으로 호환됩니다. 프로젝트에 SBJSON을 한 번만 포함하면 ARC인지 여부는 중요하지 않습니다.

+0

문제는 비 ARC SBJSON의 소스 코드가 ARC 버전 (예 : 클래스 이름)과 조금 다릅니다. 따라서 ARC를 사용하기 위해 모든 곳에서 SBJSON이 가능합니다.이 경우 제 3 자 라이브러리 [sinaweibosdkforoauth2] (http://code.google.com/p/sinaweibosdkforoauth2/)를 계속 터치해야합니다. 결국 저는 ARC가 아닌 SBJSON이 가능한 모든 클래스에 접두어 _Legacy_를 추가했으며 지금까지는 모든 것이 작동하는 것처럼 보입니다. –

+0

왜 소스가 다른가요? SBJSON 사본을 수정 했습니까? 그건 아주 이상한 일입니다. –

+0

이전의 ARC가 아닌 버전이 사용 된 것 같습니다. 예를 들어 비 ARC 버전의 경우 SBJsonBase라는 클래스가 있지만 ARC 사용 버전에는 해당 클래스가 없습니다. 내 APP에서는 아마도 SBJsonBase를 직접 사용하지 않기 때문에 ARC 버전을 사용하는 것이 가능할 수도 있습니다. 어쨌든 모든 것이 작동하기 때문에 지금 시도하지는 않겠지 만 아이디어에 대해 감사 드리며 앞으로는 내가 제안한 방식대로 시도해 볼 수 있습니다. –