iOS如何使用私有API?

wyp*_*wyp 7 iphone-privateapi ios ios5

我不想将此应用程序提交给AppStore.我已经尝试了很多次,但遇到了很多问题:(

我使用class-dump来获取UIKit.framework的所有头文件.在由类转储生成的UIApplication.h中,我看到了我想要使用的方法---- launchApplicationWithIdentifier.

然后我把UIApplication.h放在我的项目中并导入它.编译,我得到了很多"重新定义枚举器...."错误,因为在我之前使用的UIKit.framework中,还有另一个UIApplication.h.但是这个文件没有startApplicationWithIdentifier方法.

如果我删除以前的UIKit.framework并导入class-dump生成的文件夹.然后它看起来像一个框架,但如果我展开它,它是空的.

然后我想让所有生成的头文件成为一个框架文件,取代之前的UIKit.framework.但我不知道怎么做.我们可以看到,在系统框架目录下,有一个与框架同名的文件,并有一个"执行的shell脚本"图标.我该怎么做这个文件?

我真的很困惑.有人可以帮个忙吗?谢谢.

Fel*_*lix 8

只需在要使用它的类实现上方的类别接口中指定私有方法,如下所示:

@interface UIApplication (Private)

- (BOOL)launchApplicationWithIdentifier:(id)identifier suspended:(BOOL)suspended;

@end
Run Code Online (Sandbox Code Playgroud)

不要导入整个类转储文件并与原始UIKit框架链接.

使用私有API时必须非常小心.这些方法可以在未来的iOS版本中更改或删除!

检查方法是否respondsToSelector:在运行时确实存在,并为不存在的情况做好准备.

我在我自己的应用程序中使用了一个秘密的MapKit功能,我知道私有方法只存在于iOS 5中.所以我的应用程序仍适用于所有iOS版本,但此功能仅适用于iOS 5(Apple已删除或在iOS 6中更改) beta 1).