2009-09-30 59 views
-1

嘿我需要一些額外的功能,我的程序,我想用我的iPhone程序一些未記錄的API。 我下載: DumpFrameworks爲Dumpframeworks.pl 和類轉儲 來自:http://ericasadun.com/HeaderDumpKit/iPhone 3.0的轉儲框架無法正常工作?

我把DumpFrameworks.pl在下載 和類轉儲文件在/ usr/local/bin目錄

在終端我運行:

$perl DumpFrameworks.pl 

和一些警告和錯誤出現了:

Framework: Accelerate 
2009-09-30 08:39:58.776 class-dump[466:903] Warning: This file does not contain any Objective-C runtime information. 
Framework: ApplicationServices 
2009-09-30 08:40:00.443 class-dump[473:903] Couldn't read file: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/ApplicationServices.framework/ApplicationServices 
2009-09-30 08:40:00.449 class-dump[473:903] Couldn't read file: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/ApplicationServices.framework/ApplicationServices 
class-dump: Input file (/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/ApplicationServices.framework/ApplicationServices) is neither a Mach-O file nor a fat archive. 
... etc (above warnings are very common when I run the perl script) 

***但最重要的是,腳本似乎最終失敗了。

我***

(after several warnings like above) 
Framework: WebKit 
    2009-09-30 08:40:24.228 class-dump[662:903] caught exception: expected (many things), got 260 
    2009-09-30 08:40:24.232 class-dump[662:903] type: ^{WebDocumentLoaderMac=^^?iB^{Frame}{RefPtr<WebCore::MainResourceLoader>="m_ptr"^{MainResourceLoader}}{HashSet<WTF::RefPtr<WebCore::ResourceLoader>,WTF::PtrHash<WTF::RefPtr<WebCore::ResourceLoader> >,WTF::HashTraits<WTF::RefPtr<WebCore::ResourceLoader> > >="m_impl"{HashTable<WTF::RefPtr<WebCore::ResourceLoader>,WTF::RefPtr<WebCore::ResourceLoader>,WTF::IdentityExtractor<WTF::RefPtr<WebCore::ResourceLoader> >,WTF::PtrHash<WTF ... etc (I got many many lines of this kind of code in WebCore framework) 

我不知道我做錯了嗎? 我需要一些額外的設置嗎?

我使用Mac OS 10.6.1,想甩在首位3.0框架,但我真正的目標是3.1框架

任何幫助將是非常讚賞。

回答

1

根據我對無證API的理解,他們在那裏。所以在任何應用程序中,我都可以稱它們爲

從我對類轉儲的理解中,他們需要發現未公開的API。

在Sadun的書中,她說,這裏有一個未公開的API調用它來使用它,將其包含在標題中。然後你可以使用它。

我的建議是不要使用它們。

+0

我怎麼能只給他們打電話? 我也想包含標題,但它們在哪裏?我認爲他們不是。這就是爲什麼我試圖做我想做的事情。 ;) – nacho4d 2009-09-30 02:00:55

+0

您不包括從類轉儲中獲得的頭文件。您在您爲自己編寫的頭文件中公開未公開的API,通常使用類別。未記錄的API和* private * API有非常大的差異。你不應該使用後者。如果Apple發現您使用私有API,您的應用將無法獲得批准。 – Jasarien 2009-09-30 07:59:15

+0

#import「Celestial.h」 進口天體,現在我可以打電話給它。你只需要知道課程標題和信息(方法,ivars) – JoePasq 2009-09-30 13:17:20

0

我認爲我總共使用了DumpFrameworks一次,所以我不是那麼熟悉它,或者它爲什麼會失敗。但是,IIRC,它可以輕鬆地轉儲標題中找到的信息。

至於頭文件的位置,不僅僅是剪切和粘貼腳本。 看看腳本的功能。它清楚地表明它正在拉動公共和私人框架。轉到這些目錄,開始鑽取,然後找到頭文件。

將框架包含在您的項目中,將它們導入到您希望調用函數的位置,然後調用它們在標題中列出的函數。

爲防萬一您不知道,調用未記錄的API是讓您的應用被Apple拒絕的好方法。

1

Erica網站上包含的類轉儲版本似乎已過時。可以在這裏找到工作版本(從iPhone OS 3.2開始): http://www.codethecode.com/projects/class-dump/

注意:腳本在執行幾個框架後仍然會失敗;而不是修復腳本,您可以在您關心的框架上手動運行類轉儲。

即:

cd /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/UIKit.framework 
class-dump UIKit -H -o ~/temp/Headers/UIKit