首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何卸载NSBundle?

如何卸载NSBundle?
EN

Stack Overflow用户
提问于 2015-08-14 04:37:37
回答 1查看 803关注 0票数 4

我有一个场景,在这个场景中,我要从服务器下载本地化文件。我在应用程序开始时下载该文件,并将其存储在包中的文件夹中。就像它的英文文件,我把它存储在文件夹'en.lproj'下,名字是en.lproj

现在,当下载文件时,我使用bundleWithPath:方法加载包。加载之后,我将使用方法显示本地化。

NSLocalizedStringFromTableInBundle(key,@"Localizable",bundle,@"");

在这里之前一切都很顺利。现在,如果从服务器更新该文件,我将再次下载英文文件,并将旧文件替换为新文件。但是应用程序显示了从旧文件中替换的本地化。谁能告诉我,如果我们可以重新加载包,以便更新被反映。

在上面的场景中,当文件被更新时,应用程序不会被杀死。如果我关闭并重新启动应用程序,那么这些更改就会被反映出来。但我希望在不扼杀应用程序的情况下反映这些更改。

是否有任何方法卸载加载的NSBundle?

EN

回答 1

Stack Overflow用户

发布于 2015-08-14 06:37:39

得到答案..。

这个密码有帮助。这用于从缓存中清除加载的包。

代码语言:javascript
复制
BOOL FlushBundleCache(NSBundle *prefBundle) {
    // Before calling the function, we need to check if it exists
    // since it was weak-linked.
    if (_CFBundleFlushBundleCaches != NULL) {
        NSLog(@"Flushing bundle cache with _CFBundleFlushBundleCaches");
        CFBundleRef cfBundle =
        CFBundleCreate(nil, (CFURLRef)[prefBundle bundleURL]);
        _CFBundleFlushBundleCaches(cfBundle);
        CFRelease(cfBundle);
        return YES; // Success
    }
    return NO; // Not available
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32002358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档