Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-是否可以通过更新的XIB从internet下载捆绑包?_Ios_Bundle_Updates - Fatal编程技术网

iOS-是否可以通过更新的XIB从internet下载捆绑包?

iOS-是否可以通过更新的XIB从internet下载捆绑包?,ios,bundle,updates,Ios,Bundle,Updates,我希望在我的应用程序发布后,通过更改XIB、捆绑、下载该捆绑包并配置客户端在这些新捆绑包中查找新的XIB,能够在我的应用程序中自定义XIB 到目前为止,我已将xib添加到我创建的包中,并正在尝试下载它: // bundle URL is NSURL to uploaded resource for bundle NSBundle *myBundle = [[NSBundle bundleWithURL:bundleURL] retain]; 我得到这个错误: *** Termina

我希望在我的应用程序发布后,通过更改XIB、捆绑、下载该捆绑包并配置客户端在这些新捆绑包中查找新的XIB,能够在我的应用程序中自定义XIB

到目前为止,我已将xib添加到我创建的包中,并正在尝试下载它:

   // bundle URL is NSURL to uploaded resource for bundle
   NSBundle *myBundle = [[NSBundle bundleWithURL:bundleURL] retain];
我得到这个错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSBundle initWithURL:]: non-file URL argument'
我的问题是:有可能做我开始要做的事吗?这个错误表明这是不可能的

如果无法下载捆绑包,是否可以只下载一个xib并使用它


谢谢

,您可以加载仅包含XIB、图像和其他资产的捆绑包。不要尝试加载包含代码的捆绑包,如果您尝试加载代码,苹果会显式检查其数字签名,这会导致加载失败。

您会遇到此错误,因为捆绑包存储在文件系统中的文件夹中。您可以轻松下载文件,但无法下载文件夹。NSBundle知道这一点,因此它只允许本地文件URL进行初始化。下载捆绑包有三个选项:

  • 如中所述,您可以下载捆绑包作为zip存档并将其取消存档

  • 您可以在服务器上存储一个额外的文件,其中列出捆绑包中每个文件的文件名,并通过下载每个文件在本地创建它

  • 您可以指定所有捆绑包将使用的格式,并从捆绑包下载这些文件。这类似于2,但具有内置的文件名列表,而不是服务器上的文件名列表


  • 知道了!我正在跟踪那个链接。谢谢@RyanR你怎么知道苹果对试图加载代码的应用程序有明确的检查?您是说“负载将失败”。这是否意味着苹果将批准该应用程序,但当它尝试加载NSBundle时,它将失败?@Roberto这就是iOS这座围墙花园的全部目的。苹果公司设计该系统是为了确保任何人都不能运行未经签名的代码(这就是为什么我们都喜欢讨厌的审批流程是必要的)。另外,您不能为iOS创建框架捆绑包。我在几个版本之前尝试过,结果出现了一个异常。我敢肯定,他们在审批过程中也会扫描这些内容。@JoelTeply如果你详细说明这些评论,也许会更有建设性?好的。如果你正确地使用你的代码,你可以绕过苹果checks@JoelTeply请解释swizzling方法如何规避代码签名检查