2013-02-18 2 views
1

저는 ios 프로그래밍 분야에서 매우 새로워서 링커로 작업하는 것이 저의 새로운 세계 일뿐입니다. 내 질문에 대해 정확하게하기 위해 최선을 다할 것입니다.ios 프로그래밍 - 응용 프로그램 수준의 정적 라이브러리에서 정적 라이브러리 무시

컨텍스트 : xcode를 사용하는 ios 프로젝트의 정적 라이브러리 링크.

문제 :

문제 회원 : 3 정적 라이브러리.

libTestLibA.a

libTestLibB.a

libTestLibB_mine.a - 같은 클래스/메소드 모든 - libTestLibB.a와 동일한 기능을 제공합니다.

문제 설명

내가 libTestLibA.a를 사용하여 응용 프로그램을 만드는 중이라서.

libTestLibA에는 libTestLibB의 일부 클래스에 의존하는 일부 클래스가 있습니다. 따라서 libTestLibA.a에는 libTestLibB.a가 컴파일되어 있습니다.

이제 libTestLibB_mine이라는 자체 라이브러리가 있습니다. libTestLibB와 완전히 동일한 기능을합니다. 동일한 기능을위한 동일한 메소드/클래스. libTestLibA가 libTestLibB 대신 libTestLibB_mine을 사용하기를 원합니다. 방금 libTestLibA, libTestLibB 및 libTestLibB_mine과 같은 각 문제 구성원에 대한 정적 라이브러리 (.a)를 컴파일했습니다.

질문 :

내 응용 프로그램을 컴파일 할 때, 내가 대신 이미 (libTestLibB에 포함 된 내용의 또 다른 라이브러리 (libTestLibB_mine.a)을 사용하도록 정적 컴파일 된 라이브러리 (libTestLibA.a)를 강제 할 수 있습니다. 에이)? 그렇다면 어떻게? 그렇지 않다면 주변에 몇 가지 문제가 있습니까?

감사합니다.

답변

1

A가 B에 대해 정적으로 준수 되었다면 B를 B_mine으로 바꿀 수 있다고 생각하지 않습니다. 그러나 해결 방법으로, 나는 당신이 여기서 찾고있는 것이 "Method Swizzling"이라고 생각합니다. 그것이하는 일은, 런타임에 클래스의 메소드를 다른 메소드로 대체하는 것입니다 (메시지를 가로 채서 다른 곳으로 직접 전달하는 것).

다음 링크는 유용 할 것입니다.

  • JRSwizzle - open source library to make swizzling easier
  • CocoaDev Method Swizzling
    • 도 방법 스위 즐링의 dangers에 대해 읽어 보시기 바랍니다.
    +0

    답변 해 주셔서 감사합니다. 내가 A 클래스의 소스 코드를 가지고 있지 않기 때문에 B 클래스의 모든 클래스/메소드가 내부적으로 사용하는 것이 확실하지 않기 때문에 혼란 스러울 것입니다. B_mine은 실제로 B의 다른 버전으로, 내 앱이 B_mine을 사용하도록 강요하여 사용하기를 원합니다. libTestLibA에는 libTestLibB의 공용 헤더와 libTestLibB.a가 링크되어 있다는 것을 알고 있습니다. 이것은 B가 A에서 정적으로 컴파일된다는 것을 의미합니까? – inspi

    관련 문제