7

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

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

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

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

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

我真的很困惑。有人可以帮我一把吗?谢谢你。

4

1 回答 1

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 中删除或更改了它贝塔 1)。

于 2012-06-17T10:10:13.450 回答