如何使用iPhone SDK私有API

时间:2010-05-15 02:21:08

标签: iphone resources iphone-privateapi

我还没有找到使用iPhone库中私有API所需步骤的完整列表。

特别是,我想知道如何获取头文件,如果它们甚至是必需的,如何让它编译(当我只是添加头,它抱怨函数没有定义),以及什么可以用来了解私有API的资源(例如来自其他用户的体验,例如http://iphonedevwiki.net/有一些)。

我在其他地方读过,人们建议使用class-dump来获取标题。有没有替代方法?我注意到有some repositories个iPhone私有SDK,你推荐的最新资源是什么?

关于私有API文档的大多数previous questions都已链接到Erica Sadun's website,它似乎不再有文档了(左边的所有链接都是交叉的)出)。

请保存关于不使用私有API的评论......我知道最大的风险:

  • 应用程序将被Apple拒绝。
  • 应用程序将在未来的操作系统更新中中断。

我说的是合法用途,例如:

  • 私人应用程序的使用(例如,用于单元测试,或乱搞以查看可能的内容)

1 个答案:

答案 0 :(得分:5)

Objective-C在编译的二进制文件中有足够的信息来几乎完全重建头文件。唯一缺少的是参数名称,通常可以从类型或方法原型以及一些结构和枚举定义中近似。这就是为什么像类转储这样的程序是获取标题的最佳方式。它们是全面的,包括每个方法,无论它是否在真正的标题中,是最新的,不需要分发。获取标题的另一种方法是查看同一框架的公共版本,例如,WebKit仅在iPhone上是私有的,并且有其他文档记录。

如果你对Objective-C以外的东西感兴趣,你几乎必须采用老式的方式,通过反汇编来猜测函数参数。一旦你得到一些符号,搜索它们,也许你会找到其他人发布的标题。 otool是一个很好的起点。

如果包含标题,无论是Objective-C还是C,您还必须包含标头声明方法的框架或库,就像任何其他标头一样。大多数Objective-C内容都位于常规Frameworks文件夹旁边的PrivateFrameworks文件夹中。您可以在usr / lib文件夹中查找库。

请注意,模拟器和设备之间存在很多差异,因此请确保从实际设备构建标头。还有一些方法您无权作为沙盒应用程序运行。

相关问题