YIFEIYANG 易飞扬的博客

28三/103

iPhone开发技巧之环境篇(8)— 使用非公开的API

  • 博主:易飞扬
  • 原文链接 : http://www.yifeiyang.net/iphone-development-techniques-of-environmental-chapter-8-the-use-of-non-public-api/
  • 转载请保留上面文字。


  • iPhone开发技巧之环境篇(8)--- 使用非公开的API

    苹果官方发布的iPhone SDK对底层API进行了很大的限制。官方的SDK是在某些底层API之上增加了一层针对开发者的类库,供开发者使用,这些非公开的底层API可以用 class-dump 等工具直接展开,这样开发者就可以通过展开的头文件定义直接与iPhone中的所有框架库进行对话.

    但是这些API是 undocumented 的,需要自己琢磨使用的方法。下面就介绍一下 Private Framework API 头文件的生成方法。

    生成非公开API的头文件

    下载 class-dumpdump.pl , 并将 class-dump 拷贝到 /usr/local/bin 下, 如果没有执行权限,用 chmod 加上。dump.pl 放到任意适当的位置,同样加上执行权限。

    dump.pl 中指定了需要 dump 的库路径,根据自己的环境修改。其中 IPHONE_SDK 是想要展开的 iPhone SDK 的版本号,根据自己的需要和环境具体设置。

    1
    2
    3
    4
    5
    6
    7
    # Public Frameworks
    dump_frameworks("/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$IPHONE_SDK.sdk/System/Library/Frameworks",
                    'Frameworks');
    
    # Private Frameworks
    dump_frameworks("/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$IPHONE_SDK.sdk/System/Library/PrivateFrameworks",
                    'PrivateFrameworks');

    最后只需在命令行下敲下面的命令就好了,

    1
    $ ./dump.pl

    这样在当前目录下会生成 Headers 子目录,其下面是 版本号/Frameworks版本号/PrivateFrameworks 目录,分别对应公开的和非公开的API。

    使用1

    使用的时候在你的工程中添加需要的Frameworks,向导会指示你所需要的头文件并选择到工程中。接下来,在连接符号中输入 -force_flat_namespace-undefined ,要不然就会在链接的时候出现问题,告诉你找不到符号。

    然后将头文件 #import 入你的工程,并移去多余的 #import 指令。通常 #import "NSObject.h" 是不需要的,如果编译出现错误,往往是该私有头文件包含了不必要的 #import。

    最后,就可以编译测试了。


    1. 参考Aral Balkan的文章。

    相关文章

    喜欢这个文章吗?

    考虑订阅我们的RSS Feed吧!

    评论 (3) 引用 (0)
    1. 谢谢,强烈关注!!

    2. 博主,我按照你前面配置的,然后再命令行执行”./dump.pl”,但是命令行返回

      Framework: Accelerate
      Could not execute class-dump – No such file or directory

    3. ios4 header你知道如何导出吗?


    发表评论


    还没有引用.














    相册

                                   ESC_036 ESC_039 ESC_043

    日历

    2012年二月
    « 一    
     12345
    6789101112
    13141516171819
    20212223242526
    272829  

    页面

    分类目录

    博客目录

    标签




    free counters