-2

Xcode を介してプライベート メソッドなどをログに記録する方法はありますか? 例は次のとおりです。

ユーザーがボタンを押します。コンソールは、ユーザーがボタンを押したときに発生したすべての情報をログに記録します。SQL出力をデバッガーに記録し、進行中のすべてを確認する方法を考えています。

理由は、いくつかのプライベート フレームワーク、特に電子メールの送信を制御するフレームワークを使用しようとしているからです。MFMailComposeViewController が呼び出され、ユーザーが送信を押してから閉じられるまでの間に何が呼び出されるかを確認する方法があれば便利です。何が使用されているかを正確に知る方法があれば、プライベート ヘッダーの並べ替えが少し簡単になります。

....私の質問が明確になることを願っています。

編集:

これと同じくらい簡単なものでも:

NSLog(@"%s", __PRETTY_FUNCTION__);

しかし、それはプライベート フレームワークにも適用できます。

4

2 に答える 2

2

私が考えることができる最も近いものは、次のいずれかです。

NSLog( @"%@", [NSThread callStackSymbols] )
NSLog( @"%@", [NSThread callStackReturnAddresses] )

ただし、脱獄の領域に入るため、必要なものが見つからない場合があります。アプリケーションを公開する場所に応じて、この点に注意してください。

プライベート API の詳細については、こちらを参照してください。ただし、それらがどれほど有用であるか、最新であるかは保証できませんまた、プライベート API に関する多くの検索は、 class-dumpと呼ばれるプログラムにつながります。

更新

好奇心から、このMFMailComposerDelegate方法でmailComposeController:didFinishWithResult:error:は十分な情報が得られませんか? 呼び出されると、メールの送信に失敗した場合 ( source )に、結果 (失敗、キャンセル、保存、送信) とエラー オブジェクト (詳細を含む可能性あり) を取得します。

于 2013-03-26T03:07:56.947 に答える
0

おそらく、関数にシンボリックブレークポイントを設定できますobjc_msgSend。これにより、すべてのobjective-cメソッド呼び出しがトラップされます。

于 2013-03-26T03:05:01.607 に答える