代码之家  ›  专栏  ›  技术社区  ›  RanLearns

从Web加载内容的最佳方法

  •  3
  • RanLearns  · 技术社区  · 14 年前

    我有一个应用程序显示10个图像,每个图像都与一个按钮和一个URL链接相关联。我想发布这个应用程序,但可以通过网络更新图片和链接,而无需更新应用程序。

    我知道我可以像这样从网络中提取图像:

    NSURL *url = [NSURL URLWithString: @"http://example.com/image.png"];
     NSData *data = [NSData dataWithContentsOfURL: url];
     UIImage *image = [UIImage imageWithData: data];
     UIImageView *imageView = [[UIImageView alloc] initWithImage: image];
    

    我假设也可以从网络中提取plist?

    .xib和.h/.m文件怎么样?我可以让我的应用程序在每次运行时检查一个新的.xib/.h/.m文件的特定URL吗?当我在两周内将这些文件上载到该URL时,运行该应用程序的人会让它加载新文件吗?

    因此,不要像这样从我的资源中加载类/xib:

    UIViewController *nextController = [[ClassName alloc] initWithNibName:@"ClassName" bundle:nil];
    

    我会用从网络中提取的新数据替换类名吗?

    我见过一些应用程序可以从网络上获取新的数据(当然通常是简单的图片/文本——比如涂鸦跳跃中偶尔的“新闻”更新),而不需要用户下载应用程序的更新。如果能为实现这一目标提供帮助,我们将不胜感激……谢谢!

    2 回复  |  直到 14 年前
        1
  •  2
  •   Daddy    14 年前

    将捆绑在应用程序中的所有起始材料存储在资源文件夹中。在第一次加载时,通过编程将所有这些材料复制到bundle库路径。然后,您的应用程序应该只处理库目录中的数据。当应用程序第一次连接到网络时,您可以将任何新数据保存到用户的库路径,并覆盖旧数据。

    编译后无法写入app bundle目录,因为这会破坏苹果的签名。

    显然,这只是一个高层次的建议。如果不知道你到底想做什么,很难给出详细的答案。但可以,下载和存储数据是允许的,只是不在应用程序包中。很遗憾,您不能发送新的.h/.m文件或XIB。

        2
  •  1
  •   NWCoder    14 年前

    您可以从Web加载资源,但不能在正在运行的应用程序中“编译”任何内容,因此.m/.mh/.xib不可用。

    您当然可以加载一个plist(或其他数据文件),并使用它来引用不同的图像和链接。(The http://example.com/image.png 从这个意义上说,上面可能是动态的。)