2012-06-17 9 views
7

私はこのアプリをAppStoreに提出したくありません。私は何度も試してみましたが、非常に多くの問題に遭遇しました:(iOSプライベートAPIの使い方

私はclass-dumpを使っ---- launchApplicationWithIdentifierを使用します。

私はUIApplication.hを自分のプロジェクトに入れてインポ​​ートします。コンパイルすると、UIKit.frameworkの "Redefinition of enumerator ...."エラーが発生します。

前のUIKit.frameworkを削除し、クラスダンプによって生成されたフォルダをインポートすると、フレームワークのように表示されますが、if私 展開してください、それは空です。

次に、生成されたすべてのヘッダーファイルを、前のUIKit.frameworkに代わるフレームワークファイルにする必要があります。しかし、私はどのように知りません。わかるように、システムフレームワークディレクトリの下には、フレームワークと同じ名前のファイルがあり、「実行されたシェルスクリプト」アイコンがあります。このファイルを作成するにはどうしたらいいですか?

私は本当に混乱しました。誰かが私に手を差し伸べることができますか?ありがとうございました。

+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それはiOS 6のベータ版1)。

+1

これは動作します。どうもありがとうございます:-)私のアプリケーションには、dpkgツールを使ってdebファイルを作成し、それをインストールする必要があります。このようにして、私のアプリケーションは別のアプリを起動できます。 – wyp

関連する問題