2009-09-30 3 views
-1

Эй, мне нужны дополнительные возможности для моей программы, и я хотел бы использовать некоторые недокументированные API для моей программы для iPhone. Скачал: DumpFrameworks в Dumpframeworks.pl и классовой отвала от: http://ericasadun.com/HeaderDumpKit/Сбрасывающие рамки для iPhone 3.0 не работают?

Я поставил DumpFrameworks.pl в Загрузки и файл класса дампа в/USR/местные/бен

в терминале Я бегу:

$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.

В книге Садуна она говорит, что это недокументированный API, чтобы использовать его, включить это в заголовок. Тогда вы можете использовать его.

Моя рекомендация не использует их.

+0

Как я могу просто назвать их? Я также хочу включить заголовки, но где они? Я думаю, что это не так. Вот почему я стараюсь делать то, что я пытаюсь сделать. ;) – nacho4d

+0

Вы не включаете заголовки, которые вы получаете из дампа класса. Вы раскрываете недокументированный API в заголовке, который вы пишете для себя, обычно используя категории. Существует очень большая разница с недокументированным API и * private * API. Вы никогда не должны использовать последний. Ваше приложение не получит одобрения, если Apple обнаружит, что вы используете частный API. – Jasarien

+0

#import «Celestial.h» импортирует небесное, теперь я могу назвать его. Вам просто нужно знать заголовок и информацию о классе (методы, ivars) – JoePasq

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 
Смежные вопросы