2012-08-06 80 views
0

我正在寻找执行.xib(具有自己的控制器和库)预编译在服务器上,在运行时下载它。 这可能吗?iOS - 从服务器执行预编译的应用程序

谢谢!

编辑:

所以能有人给我使用一个NSBundle程序执行其他应用程序的例子吗? 如何创建捆绑应用程序?

+1

可能在'允许'或技术上可行吗? – Jessedc 2012-08-06 11:52:59

回答

2

我不认为你可以在运行时将xib导入到应用程序的包中(为了发生这种情况,你将不得不将其导入到应用程序的包中)。其他人可能更了解并纠正我!

+2

其实你可以,但正如克里斯解释的 - 如果有人想在AppStore上发布应用程序,这种功能是被禁止的(出于安全原因,我想象)。请参阅:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingCode/Concepts/CFNSBundle.html – 2012-08-06 13:56:07

+0

我试过这样做,通过文档,但没有任何例子码。我是可可/触摸新手,但我需要实现它!你能否以简单的方式解释我?我不假装把它送到苹果商店。谢谢! – user1573607 2012-08-07 15:04:59

1

我可以想到几种方法可以尝试做到这一点,但是您是否打算将其送到商店?

这是Apple开发人员指南明确禁止的。

+0

嘿克里斯,你能解释一下你刚刚说的方式吗?我并没有试图将其发送到苹果商店,仅限于内部业务使用。 谢谢! – user1573607 2012-08-07 15:01:47

+0

嗨,@Caleb提到的方法可以正常工作。正如他所提到的,您将无法动态链接与这些XIB关联的任何代码,但是您可以执行一些操作,如更改用于inWithNib的nib:对已经在该包中的类。 – 2012-08-08 00:00:06

0

一个.xib文件只是一个数据文件,所以在应用程序包之外加载一个应该不会有问题。我不能说我曾经尝试过,但只要它是在一个包,你应该能够:

  1. 使用路径包包含的.xib你创建一个NSBundle的实例想要加载。请参阅+[NSBundle bundleWithPath:]

  2. 使用您在上一步中创建的包,使用任何常规的.xib加载方法(例如-[UIViewController initWithNibNamed:bundle:]+[UINib nibWithNibName:bundle:])加载.xib。

与它自己的控制器和库

那部分将无法正常工作。 iOS不允许动态链接到系统提供的框架以外的框架,因此无法加载代码。但是,如果您可以将所需的所有代码构建到应用程序中,则仍应能够使用上述的下载的.xib。这可以让你做一些事情,比如更新你的视图的布局方式,或者你的控件连接的目标和动作。

相关问题