gpt4 book ai didi

iphone - 更新应用程序后加载错误的 xib

转载 作者:行者123 更新时间:2023-11-29 10:54:21 25 4
gpt4 key购买 nike

我的应用程序已在 App Store 上,我想发布一个新的国际化版本。因此,我为英文版创建了一个 xib,为法语版创建了一个 xib(本地化在良好的 en.lproj 和 fr.lproj 文件夹中)。当我在已经有第一个非国际化版本的 iPhone 上设置该应用程序时,我在界面上遇到了一些问题:该应用程序不会更新 UI 上的所有更改,即使我设置了iPhone 语言为英语(应用程序不会自动选择好的 xib)。

如果我只清理项目并重新构建,它仍然不起作用,但是当我清理我的项目,删除手机的应用程序并重新构建时,一切都很顺利。我不希望问题发生在已经拥有该应用程序并通过 App Store 更新它的人身上:/有没有办法了解发生了什么?

最佳答案

事情是这样的:在您的旧版本中,您的应用程序包中有一个 .xib 文件,并且该包看起来像这样:

 <bundle-path>/interface.xib

在新版本中,您拥有此文件的两个本地化版本,您的包如下所示:

 <bundle-path>/fr.lproj/interface.xib
<bundle-path>/en.lproj/interface.xib

当应用程序尝试加载 xib 文件时,它首先直接在 bundle 目录中查找,如果在那里没有找到该文件,则在包含本地化文件的子目录中查找该文件。

如果您的设备上有旧版本,然后从 Xcode 构建并运行新版本,遗留文件不会被删除,所以您最终得到这个包

 <bundle-path>/interface.xib
<bundle-path>/fr.lproj/interface.xib
<bundle-path>/en.lproj/interface.xib

并且应用加载未本地化的文件,因为它永远不需要查看本地化子目录。

我假设出于性能原因,当您从 Xcode 部署到开发设备时,遗留文件不会被删除。

但是,您的用户不会遇到这个问题。当用户安装您的应用程序更新时,应用程序包将完全替换为您的新包。因此,如果您上传一个没有遗留文件的“干净” bundle ,并且当您在您的设备上进行全新安装时该版本可以工作,它也可以在您用户的设备上工作。

关于iphone - 更新应用程序后加载错误的 xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19079295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com