2012-06-17 2 views
7

이 앱을 AppStore에 제출하고 싶지 않습니다. 여러 번 시도했지만 많은 문제가 발생했습니다 : (iOS 개인 API 사용 방법

클래스 덤프를 사용하여 UIKit.framework의 모든 헤더 파일을 가져옵니다. 클래스 덤프에 의해 생성 된 UIApplication.h에서 I 메소드를 보았습니다. ---- launchApplicationWithIdentifier를 사용하고 싶습니다.

그런 다음 UIApplication.h를 프로젝트에 가져 와서 가져옵니다. 컴파일러에서 UIKit.framework 때문에 열거 형의 "Redefinition ..."오류가 발생했습니다. 이전에는 다른 UIApplication.h가 있지만이 파일에는 launchApplicationWithIdentifier 메서드가 없습니다.

이전 UIKit.framework를 삭제하고 클래스 덤프로 생성 된 폴더를 가져 오면 프레임 워크처럼 보이지만 나는 전개해라, 그것은 비어있다.

그러면 생성 된 모든 헤더 파일을 이전 UIKit.framework를 대체하는 프레임 워크 파일 ant로 만들고 싶습니다. 하지만 어떻게해야할지 모르겠다. 보시다시피, 시스템 프레임 워크 디렉토리 아래에는 프레임 워크와 이름이 같고 '실행 된 쉘 스크립트'아이콘이있는 파일이 있습니다. 이 파일을 어떻게 만들 수 있습니까?

정말 혼란 스러웠습니다. 누군가 나에게 손을 줄 수 있니? 고맙습니다.

+0

OMG, 저는 다른 질문에 대한 답변을 추가했습니다. http://stackoverflow.com/questions/11047176/ios-how-can-i-use-uiapplication-launchapplicationwithidentifier-which-is-in -priv –

답변

7

그냥 같이, 당신이 그것을 사용하고자하는 클래스 구현 위의 범주 인터페이스의 개인 방법을 지정

@interface UIApplication (Private) 

- (BOOL)launchApplicationWithIdentifier:(id)identifier suspended:(BOOL)suspended; 

@end 

원래 UIKit과 학급 전체 덤프 파일과 링크를 가져 오지 않음 뼈대.

개인 API를 사용할 때는 매우주의해야합니다. 이러한 방법은 향후 iOS 버전에서 변경되거나 제거 될 수 있습니다.

메소드가 실제로 런타임에 respondsToSelector:과 함께 존재하는지 확인하고 그것이 존재하지 않는 경우에 대비하십시오.

내 애플리케이션에 비밀 MapKit 기능을 사용했고 개인용 메소드가 iOS 5에만 존재한다는 것을 알고있었습니다. 따라서 내 앱은 모든 iOS 버전에서 작동하지만이 기능은 iOS 5에서만 사용할 수 있습니다 (Apple이 제거 또는 변경됨). iOS 6 베타 1).

+1

그것은 작동합니다. 고맙습니다 :-) 게다가, 나는 내 응용 프로그램에 deb 파일을 사용하여 dpkg 도구를 만들어서 설치해야합니다. 이 방법으로 만, 내 응용 프로그램이 다른 응용 프로그램을 시작할 수 있습니다. – wyp