2012-04-21 91 views
5

我正在研究iOS上的大型项目,我想将独立模块分成几个可加载的包。但是,官方文档指出iOS上不支持可加载包。另外,我打算使用内部分发,因此应用商店批准不是问题。iOS上的可加载包,有没有什么办法可以实现呢?

现在我的问题是:我在代码中调用[_bundle principalClass]来访问可装入包的入口类。它可以在越狱的iOS设备上正常工作。对于未破解的设备,当我在Xcode中使用调试模式时,它也可以正常工作。但是当我从跳板上独立运行它时,它会崩溃到背景。

我真的想知道:

1)为什么它是在越狱/ unjailbroken设备运行加载束如此不同?
2)应用程序的XCode调试模式和正常运行模式之间的主要区别?

在unjailbreak的iOS设备上使用动态库还有其他棘手的方法吗?

回答

1

iOS不允许所有不是系统组成部分的可执行代码的动态加载;这包括框架,dylibs,使用mmap的可执行内存页面等等。希望他们有一天会允许动态包,但是暂时你需要将你的模块构建为静态库并在构建时与它们链接。围绕这个限制没有已知的方法。

很多人都写过关于如何操作(例如,http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/),或者您可能想要使用现有的项目为例。我喜欢的一个是GData objc API,它为OS X构建动态框架时的目标以及构建iOS时的静态库:http://code.google.com/p/gdata-objectivec-client/

相关问题