iphone - 如何使用iPhone SDK私有(private)API

标签 iphone resources iphone-privateapi

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

特别是,我想知道如何获取头文件,如果需要的话,如何让它编译(当我简单地添加头文件时,它会提示函数未定义),以及什么可用于了解私有(private) API 的资源(例如,根据其他用户的经验,例如 http://iphonedevwiki.net/ 其中有一些)。

我在其他地方读到人们推荐使用 class-dump获取标题。有其他方法吗?我注意到有some repositories关于 iPhone 专用 SDK,您会推荐哪些最新资源?

大多数previous questions关于私有(private) API 的文档,全部链接到 Erica Sadun's website ,它似乎不再有文档(左侧的所有链接都被划掉了)。

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

  • 应用将被 Apple 拒绝。
  • 应用将在未来的操作系统更新中出现故障。

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

  • 私有(private)应用程序使用(例如,用于单元测试,或者闲逛看看有什么可能)

最佳答案

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

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

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

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

关于iphone - 如何使用iPhone SDK私有(private)API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838656/

相关文章:

iphone - Apple 音频框架之间有什么区别?

ios - 如何使用私有(private)框架从 iPhone 应用程序访问 Safari 历史记录

iphone - 如何使用分块编码上传数据?

iphone - 如何通过iPhone中的侧面音量控制按钮使用系统声音服务控制文件播放的音量

c# - 查找 CultureInfo 的资源

.net - 向 ASP.NET 程序员教授 ASP.NET MVC 的最佳学习资源是什么?

android - 我应该如何存储常用字符串?

iPhone 演示帮助 : anyone know of a faster screen capture alternative to UIGetScreenImage()?

iphone - BluetoothManager 框架通知列表

iphone - 选择 TableRow 和 SelectionColor 应该是可见的,然后自动消失