如何防止在更改语言/区域后重建应用程序的需要

时间:2010-11-27 23:57:25

标签: iphone xcode internationalization ios4 app-store

问题发生在XCode>'构建并运行',
不是在'仪器>中运行它泄漏。 所以Xcode似乎是一个问题 如果是这种情况,我不介意进行额外的重建。

但是,如果在应用程序发布到iTunes应用程序商店后也会发生问题,
并且客户在她的设备中安装应用程序,
每次更改语言/地区时,她都必须重新安装应用程序 (要说,这是不可接受的)。

这个问题:
    a)只是在Xcode中(不在应用程序商店中)?     b)其他开发人员没有经历过,很可能是应用程序中的错误?或
    c)即使从app store下载安装app也可能浮出水面?

如果'b'或'c',任何想法如何解决?

----------------重现问题的步骤-----------------
在发展过程中:
  1)执行Xcode>'构建并运行',验证应用程序是否按预期工作(在模拟器或设备中);
  2)更改语言和地区(在iPhone的“设置>一般>国际”中)
  3)验证:
     -Console显示无信息错误:
                    程序收到信号:“SIGKILL”。
     -App在后台崩溃,
      - 单击应用程序的图标图标不再启动应用程序
          (应用程序的默认屏幕显示一秒钟,然后崩溃)
  4)做另一个'建立并运行'   5)验证现在应用程序启动并运行良好
    (按照预期的新语言和区域。所以应用程序的本地化字符串等工作正常。)

6)执行“使用性能工具运行”>泄漏
  7)更改语言和地区(在iPhone的“设置”中)
  8)验证没有问题 那就是:
     仪器跟踪中断(应用程序或工具中没有崩溃)和
     用户可以像往常一样在iPhone中重新启动应用程序(步骤3和4被删除)。

2 个答案:

答案 0 :(得分:1)

我见过类似的行为。在第三步和第五步之间,你可能想在Xcode中尝试“停止调试”并跳过重建。

我可以更改设备上的语言,然后在不进行新构建的情况下使用新选择的语言,但我必须先按Xcode中的停止按钮。

答案 1 :(得分:0)

解决方案:问题出现在应用程序中 它在.plist中存储了一个本地化的值,并使用该值进行比较 当语言被更改时,.plist中的值仍然保留旧语言,因此比较(使用新语言中的值)失败 通过在.plist和比较中使用与语言无关的值来修复。