iPhone开发技巧之环境篇--- 使用非公开的API
来源:互联网 发布:深度linux 编辑:程序博客网 时间:2024/05/28 05:14
苹果官方发布的iPhone SDK对底层API进行了很大的限制。官方的SDK是在某些底层API之上增加了一层针对开发者的类库,供开发者使用,这些非公开的底层API可以用class-dump 等工具直接展开,这样开发者就可以通过展开的头文件定义直接与iPhone中的所有框架库进行对话.
但是这些API是 undocumented 的,需要自己琢磨使用的方法。下面就介绍一下 Private Framework API 头文件的生成方法。
生成非公开API的头文件
下载 class-dump 和dump.pl , 并将 class-dump 拷贝到 /usr/local/bin 下, 如果没有执行权限,用 chmod 加上。dump.pl 放到任意适当的位置,同样加上执行权限。
dump.pl 中指定了需要 dump 的库路径,根据自己的环境修改。其中 IPHONE_SDK 是想要展开的 iPhone SDK 的版本号,根据自己的需要和环境具体设置。
# Public Frameworksdump_frameworks("/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$IPHONE_SDK.sdk/System/Library/Frameworks", 'Frameworks');# Private Frameworksdump_frameworks("/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$IPHONE_SDK.sdk/System/Library/PrivateFrameworks", 'PrivateFrameworks');
最后只需在命令行下敲下面的命令就好了,
$ ./dump.pl
这样在当前目录下会生成 Headers 子目录,其下面是 版本号/Frameworks 和 版本号/PrivateFrameworks 目录,分别对应公开的和非公开的API。
使用1
使用的时候在你的工程中添加需要的Frameworks,向导会指示你所需要的头文件并选择到工程中。接下来,在连接符号中输入 -force_flat_namespace 和 -undefined ,要不然就会在链接的时候出现问题,告诉你找不到符号。
然后将头文件 #import 入你的工程,并移去多余的 #import 指令。通常 #import "NSObject.h" 是不需要的,如果编译出现错误,往往是该私有头文件包含了不必要的 #import。
最后,就可以编译测试了。
1. 参考Aral Balkan的文章。
- iPhone开发技巧之环境篇(8)--- 使用非公开的API
- iPhone开发技巧之环境篇--- 使用非公开的API
- iPhone开发技巧之环境篇(1)--- 使用Emacs开发iPhone应用程序
- iPhone开发技巧之环境篇(7)--- 区分不同版本的iPhone
- iPhone开发技巧之环境篇— 区分不同版本的iPhone
- iPhone开发技巧之环境篇--- 区分不同版本的iPhone
- iPhone开发技巧之环境篇--- 区分不同版本的iPhone
- iPhone开发技巧之环境篇(7)--- 区分不同版本的iPhone
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之私有API--- UISegmentedControl
- iPhone开发技巧之私有API--- UITableView
- iPhone开发技巧之私有API--- UIApplication
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之私有API
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之环境篇(4)--- 配置Xcode的窗口布局
- iPhone开发技巧之环境篇(5)--- 用Subversion管理iPhone程序
- 修改唯一约束
- Migrate tickets from mantis to JIRA
- 标准linu休眠和唤醒机制分析(三)
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- 2012.3.13java.util
- iPhone开发技巧之环境篇--- 使用非公开的API
- 标准linu休眠和唤醒机制分析(四)
- 新版linux系统设备架构中关于电源管理方式的变更
- Android之 SoftReference
- Android在标准linux基础上对休眠唤醒的实现(一)
- VS2008创建最基本的Win32应用程序
- 让文本域不显示滚动条和边框
- 第四周实验报告(任务3)
- Android在标准linux基础上对休眠唤醒的实现(二)