2013-03-25 69 views
-2

有沒有辦法通過的Xcode登錄私有方法等?示例將是:登錄私人iPhone方法

用戶按下一個按鍵。控制檯記錄用戶按下按鈕時發生的所有事情的信息。我正在思考如何將SQL輸出記錄到調試器並查看所發生的一切。

原因是,我試圖與一些私人框架的工作,特別是控制發送電子郵件的一個(或多個)。如果有某種方法可以查看MFMailComposeViewController何時被調用,用戶按下send以及何時被解除,那麼這將會很有幫助。如果有一些方法可以確切知道正在使用什麼,通過私人頭文件排序會更容易一些。

....希望澄清我的問題。

編輯:

即使是一些如此簡單:

NSLog(@"%s", __PRETTY_FUNCTION__); 

但是,可以適用於私人框架。

回答

0

也許你可以在objc_msgSend功能設置一個斷點象徵,這將捕獲每一個Objective-C的方法調用。

2

我能想到的將是以下中的一個最接近:

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

但是,你可能不會最終找到你想要的東西,因爲你做了越獄的領土。記住這一點取決於你打算髮布你的應用程序的位置。

可能找到私人API的here更多的信息,但我不能保證他們是多麼有用或最新的。還有大量關於私有API的搜索導致名爲class-dump的程序。

UPDATE

出於好奇,莫非MFMailComposerDelegate方法mailComposeController:didFinishWithResult:error:不provid足夠的諮詢無論?被調用時,發送郵件失敗的事件(source)會得到結果(失敗,取消,保存,發送)和錯誤對象(可能有更多詳細信息)。

+0

謝謝!目的是爲了通過使用該類的私有頭然後自己調用該方法來查看「發送」按鈕調用了哪種方法以實現自動化。委託方法僅提供所發生事件的後效應。 – 2013-03-26 03:27:33

+0

這也適用於企業應用程序,因此應用程序商店限制不適用於此特定應用程序。除了發現如何做到這一點之外,第二個原因是爲了檢查更新版本的iOS以查找私有框架中的更改,不需要每次都轉儲標題並搜索它們。 – 2013-03-26 03:30:16

+0

@DanaK可以理解,但即使使用企業帳戶,Apple也不會輕鬆。除了限制之外,私有API仍然深藏不露。 – 2013-03-26 03:32:22