私有api

 

一.基本知識

 

iPhone中的API除了公開的API:Published API外(或者叫文檔中記錄的API:Documented API),還有兩類API:私有API:Private API和未公開的API:UnPublished API(或者叫文檔中未記錄的API:Undocumented API)。其中私有API是指放在PrivateFrameworks框架中的API,未公開的API是指雖然放在Frameworks框架中,但是卻沒有在蘋果的官方文檔中有使用說明、代碼介紹等記錄的API。後兩種API是有區別的,按蘋果的說法,未公開的API是還不夠成熟,可能還會變動的API,等完全成型了後會變成公開的API,但是目前不對其提供承諾,就是系統版本升級後可能會失效。而私有API是蘋果明確不能使用的API。雖然兩者有所區別,但是在具體使用方法上是類似的。

 

二.具體介紹

 

1.導出生成私有API的頭文件聲明

 

使用私有或未公開的API,首先需要導出其對應的頭文件,在頭文件裏有相關函數的聲明。

 

工具:

 

class-dump

 

class-dump可以從編譯後的Objective-C的二進制文件中提取對應的數據結構及函數等聲明。

 

使用方法:

 

爲了能在任意目錄下使用class-dump命令,首先建議把class-dump文件拷貝到/user/local/bin/目錄下,然後就可以在任意目錄下執行以下命令:

 

class-dump /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/ >UIKit.h

 

以上命令就可以把iPhoneSimulator3.0.Sdk中Frameworks框架裏的UIKit.Framework框架的數據結構及函數聲明等給提取出來,並且放在UIKit.h這個文件中,之後你就可以在這個頭文件中找你需要API的聲明及其使用方式。以同樣的方法,就可以挨個導出你需要那個框架中的API聲明。

 

也可以用ericasadun寫的DumpFrameworks.pl(文件中有部分註釋說明)這個文件把私有框架下的API頭文件全部提取出來。使用方法也是首先把class-dump文件拷貝到/user/local/bin/目錄下,然後在任意一個目錄下執行./DumpFrameworks.pl,然後就會在你的家目錄下產生一個Headers文件夾,裏面羅列了私有框架下的API頭文件。

 

2.使用私有API

 

導出了私有API的頭文件聲明後,使用方法就比較簡單了,首先在你的工程中包含進頭文件,然後導入對應的框架,之後就可以類似提供了靜態庫的方式在我們的代碼中使用這些私有API函數。

 

 

 

三.附加說明

 

iPhone編程中一些非常精緻好玩的API都包含在私有API或未公開的API中,雖然我們可以以這種方式使用這些非常好的API,但是這樣做是存在一定風險的,首先爲公開的API有變更的可能,這樣在每個固件版本中,你的代碼都有可能中斷。同時,最大的問題是使用了私有API的程序是不能放在App Store上銷售的。因此如果我們只是爲了好玩體驗iPhone中這些精彩的API,那沒關係。如果是爲了做出程序放在App Store上銷售的,那就不要動私有API的主意了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章