我正在寻找执行.xib(具有自己的控制器和库)预编译在服务器上,在运行时下载它。 这可能吗?iOS - 从服务器执行预编译的应用程序
谢谢!
编辑:
所以能有人给我使用一个NSBundle程序执行其他应用程序的例子吗? 如何创建捆绑应用程序?
我正在寻找执行.xib(具有自己的控制器和库)预编译在服务器上,在运行时下载它。 这可能吗?iOS - 从服务器执行预编译的应用程序
谢谢!
编辑:
所以能有人给我使用一个NSBundle程序执行其他应用程序的例子吗? 如何创建捆绑应用程序?
我不认为你可以在运行时将xib导入到应用程序的包中(为了发生这种情况,你将不得不将其导入到应用程序的包中)。其他人可能更了解并纠正我!
其实你可以,但正如克里斯解释的 - 如果有人想在AppStore上发布应用程序,这种功能是被禁止的(出于安全原因,我想象)。请参阅:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingCode/Concepts/CFNSBundle.html – 2012-08-06 13:56:07
我试过这样做,通过文档,但没有任何例子码。我是可可/触摸新手,但我需要实现它!你能否以简单的方式解释我?我不假装把它送到苹果商店。谢谢! – user1573607 2012-08-07 15:04:59
我可以想到几种方法可以尝试做到这一点,但是您是否打算将其送到商店?
这是Apple开发人员指南明确禁止的。
嘿克里斯,你能解释一下你刚刚说的方式吗?我并没有试图将其发送到苹果商店,仅限于内部业务使用。 谢谢! – user1573607 2012-08-07 15:01:47
嗨,@Caleb提到的方法可以正常工作。正如他所提到的,您将无法动态链接与这些XIB关联的任何代码,但是您可以执行一些操作,如更改用于inWithNib的nib:对已经在该包中的类。 – 2012-08-08 00:00:06
一个.xib文件只是一个数据文件,所以在应用程序包之外加载一个应该不会有问题。我不能说我曾经尝试过,但只要它是在一个包,你应该能够:
使用路径包包含的.xib你创建一个NSBundle的实例想要加载。请参阅+[NSBundle bundleWithPath:]
。
使用您在上一步中创建的包,使用任何常规的.xib加载方法(例如-[UIViewController initWithNibNamed:bundle:]
或+[UINib nibWithNibName:bundle:]
)加载.xib。
与它自己的控制器和库
那部分将无法正常工作。 iOS不允许动态链接到系统提供的框架以外的框架,因此无法加载代码。但是,如果您可以将所需的所有代码构建到应用程序中,则仍应能够使用上述的下载的.xib。这可以让你做一些事情,比如更新你的视图的布局方式,或者你的控件连接的目标和动作。
可能在'允许'或技术上可行吗? – Jessedc 2012-08-06 11:52:59