0

我有一个应用程序,其中包含一些包含大量绘图代码的巨大 .m 文件。当我去提交我的应用程序时,代码文件给我带来了超过 50 MB 的空间。我想知道,是否可以预编译 .m 文件,将其粘贴在某个服务器上,然后在用户需要使用时将其下载到我的应用程序中?

4

4 回答 4

3

不,您不能运行下载的代码。您可以做的是在网络上放置一个数据文件(Plist/XML/JSON),然后对其进行解释以绘制它所代表的内容。但绘图代码必须在应用程序上。

于 2013-07-12T03:46:36.300 回答
2

不,Apple不会让你。

在 App Store 提交指南*(又名规则)中,Apple 明确表示应用程序无法下载代码。

为什么?好吧,这与应用程序审查有关。由于 Apple 想要控制进入商店的内容(这是正确的),他们检查每一个应用程序和更新。

现在想象一下应用程序可以下载这样的代码:我,用户,下载了一个名为Bob's Money Stealer的应用程序(我从未读过应用程序的标题)。该应用程序通过了审查,因为它看起来像是一个用于检查您的股票交易的应用程序。当它通过审查时,它就像那样工作。

但是Bob's Money Stealer有一个问题:使用一周后(以确保它没有被审查),它会发送到服务器并下载一段代码。这段代码会弹出一个小对话框,询问我的股票交易账户的用户名和密码。

作为毫无戒心的用户,我立即将它们提供给应用程序。毕竟,我已经使用了一个星期,但什么也没发生。第二天,我所有的股票都不见了。

看?现在我对 Apple 允许这样的应用程序通过感到生气。我起诉他们,赢了(我住的地方司法制度不好),苹果赔了钱。

*如果有人有链接,请添加!我现在在手机上。

于 2013-07-12T03:47:47.397 回答
1

听起来您需要某种渲染引擎来执行您的绘图。如果您使用某种数据方案来存储绘图指令而不是代码来绘制自身会怎样?

例如,您可以对从 Maya 或 3D Studio Max 等 3D 应用程序以 COLLADA 格式导出的 XML 文件使用更简单的结构,其中只包含要绘制的坐标和放置的内容。读取模型的应用程序知道如何处理这些指令。

例子:

在您的代码中有一个选择器,它需要 2 个 CGPoints 来绘制一条线。

让服务器返回一个带有 2 个坐标的 JSON 字符串:

{"start":{"x":10, "y":10},"end":{"x":100, "y":10}}

您的选择器可以读取该 JSON 对象并在 2 个坐标之间画线。

于 2013-07-12T04:03:02.057 回答
0

我觉得您正在尝试做的事情会与网络建立太多不必要的连接,或者不会。

如果您的代码全部在您的应用程序中,而不是从可能会在某个时间点失败的服务器中获取,您的代码将会更快、更高效。

假设你有一张你想一直在你的应用程序中使用的图像......你想继续从网络上获取这样的图像,或者只是将它保存到你的应用程序中并在需要时引用它?

我遇到了这个问题,并决定存储在用户手机上的几兆字节/千字节/字节的数据比必须继续从 Web 服务器获取此类数据更安全......

这只是我的观点和我在应用程序开发方面的经验,这是一个推拉式的问题,它有一个方面的好处,也有其他方面的好处。

但是要最终确定,将文件存储在应用程序中,效率更高,但是是的,用户将不得不牺牲几兆字节的移动设备内存。

如果应用程序很好,比如 Facebook,谁会在乎应用程序是否占用了几兆内存,只要它高效运行并且用户不会永远等待看到变化发生。:)

于 2013-07-12T03:57:15.410 回答