2013-03-25 68 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