iOS如何使用私有API?

时间:2012-06-17 08:54:59

标签: ios ios5 iphone-privateapi

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:8)

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

@interface UIApplication (Private)

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

@end

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

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

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

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