2014-02-12 3 views
2

개인 프레임 워크 MusicLibrary에서 일부 기능을 호출하여 iOS 6 및 7에서 작동하는 Cydia 앱을 만들려고합니다. 이러한 함수는 iOS 6 및 7에서 다른 클래스에 있으며 iOS 7에 존재하는 클래스는 iOS 6에는 존재하지 않습니다. iOS 7에서는 작동하지만 iOS 6에서는 "Symbol not found" "시동시 런타임 오류. 이것은 의미가 있지만, 이것을 피하는 방법은 무엇입니까? 두 시스템 모두에 대해 하나의 응용 프로그램을 컴파일 할 수 있습니까?iOS 6 및 7 (다른 클래스이지만 동일한 기능)의 개인 프레임 워크에 연결

(I 실제로 명시 적으로 프레임 워크에 연결하고 있지 않다, 난 그냥 내가 필요한 헤더를 포함.)

답변

3

을 반대 연결하고 동적으로로드하지 마십시오.

static Class aClass; 

//... 

static void aFunction() 
{ 
    id object = [[aClass alloc]init]; 
    //... 
} 

//... 

__attribute__((constructor)) 
static void Constructor() { 
    dlopen("/System/Library/PrivateFrameworks/MusicLibrary.framework/MusicLibrary", RTLD_LAZY); 
    if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_7_0) { 
     aClass = NSClassFromString(@"ClassNameIniOS7"); 
    } else { 
     aClass = NSClassFromString(@"ClassNameIniOS6"); 
    } 
    //... 
} 
+0

감사합니다. 실제로 작동하는 것 같습니다. – newenglander