我有一个swift4应用程序,该应用程序在下载时按需挂起资源包时存在某些问题。该问题似乎与在testflight环境中使用的资源包的不同版本(而不是prod)有关。一些用户指出软件包没有下载,但是几天后(大概是操作系统清除了捆绑软件之后),下载再次开始工作。
我的问题是,有一种方法可以强制清除已下载的捆绑软件,而不是等待操作系统随意删除它们。我知道可以通过xcode(通过数据面板中的清除)完成此操作,但是我需要一个针对应用程序本身的解决方案。(使用NSBundleResourceRequest.endAccessingResources()函数将仅停止使用资源,而不会删除它们)
简而言之,无法以编程方式删除ODR。我在Apple Developer论坛上问了一个类似的question,并得到了答案:
目前尚无办法以编程方式清除ODR资源。这取决于操作系统。
当发起新的网络请求ODR内容时,系统将进行某种清单检查,检查当前内存中是否有内容以及是否有空间容纳新内存。此检查还考虑了其他几个指标,例如当前正在使用的资产,最近使用的资产,用于UI的资产等等。
完成此操作后,系统将确定要清除多少选定资产,以便有足够的空间容纳新内容。如果我没记错的话,操作系统将尝试删除整个资产包。这意味着,如果系统正在清除资产,则它将清除分组在一起的资源,例如,如果用户位于第4级,则来自第1级,第2级和第3级的所有资产。因此,系统可能会清除实际需要的空间要大得多。
如果您想更改应用程序的ODR资产,则必须向应用程序提交更新。
非常感谢您面临同样的问题。.sahiphopza发布