내 Xcode 프로젝트에는 동일한 이름의 클래스를 정의하는 두 개의 프레임 워크가 있습니다 (B.framework 및 C.framework에는 모두 MyClass라는 클래스가 있습니다). 다음과 같은 몇 가지 경고가 나타납니다.두 기호로 된 프레임 워크
Duplicate symbol _OBJC_METACLASS_$_MyClass originally in B.framework/B(MyClass.o) now lazily loaded from C.framework/C(MyClass.o)
Duplicate symbol _OBJC_CLASS_$_MyClass originally in B.framework/B(MyClass.o) now lazily loaded from C.framework/C(MyClass.o)
그런 다음 실행시에 구현 중 하나만로드하고, 그들이 동일에도 불구하고 (완전히 다른 클래스입니다 때문에 "예를 보내 인식 할 수없는 선택"가 발생합니다 다른 하나를 사용하려고 이름).
내가 직접 내 코드에서 MyClass에 구현 중 하나를 사용하지만, 다른 프레임 워크는 내부적으로 만 의 MyClass의를 사용하고 심지어 수출 (그것조차 프레임 워크의 헤더 파일 언급하지, 내가 nm
을 사용하여 그 이유를 몰라 기호를 보려면).
두 프레임 워크를 어떻게 작동시킬 수 있습니까?
내가 두려워하는 것. 나는 프레임 워크 소스에 접근 할 수 없다. 또는 내가 말했던 방식으로 그것을 고쳐 놓았을 것이다. 벤더가 저를 위해 그것을 고치기를 희망하기 전에, 친구는 그럴듯한 해결책 (그것은 일종의 해커를 느낄지라도)이 들리라고 제안했습니다 : 각각 자신의 프레임 워크 중 하나에 링크 된 내 자신의 두 프레임 워크를 생성 한 다음, 적절한 접두사가 필요합니다. 이 방법이 작동하는지 또는 프레임 워크의 기호가 캡슐화 된 프레임 워크를 통해 여전히 "내보낼"수 있습니까? Gunna test asap –
@poiuy_qwert : 절대적으로 * 작동하지 않을 것입니다. –
Obj-C는 동적 런타임 언어임을 기억하십시오. 링크 된 오브젝트 파일/프레임 워크에 의해 런타임에 추가 된 모든 것은 전체 어플리케이션에 노출됩니다. –