gpt4 book ai didi

ios - NSUserDefaults initWithSuiteName 在删除应用程序后仍然存在

转载 作者:技术小花猫 更新时间:2023-10-29 10:10:01 25 4
gpt4 key购买 nike

我有一个问题,如果我使用 [[NSUserDefaults alloc] initWithSuiteName:SUITE_NAME]] 存储任何数据,即使在删除应用程序后数据仍然存在。这是应该发生的吗?

最佳答案

这是应该发生的。这实际上是 initWithSuiteName 的目的。 , 在应用组中的所有应用之间共享数据。文档说:

Use this method in scenarios such as:

  • When developing an app suite, to share preferences or other data amongthe apps

  • When developing an app extension, to share preferences or other databetween the extension and its containing app

应用程序无法删除它,因为当应用程序被删除时,它不会收到通知。这与将项目存储在钥匙串(keychain)中的问题相同——它们在应用程序的生命周期之后仍然存在。这可能是好事也可能是坏事,具体取决于您应用的需求。

一种解决方案是加密文件内容的适当部分并将 key 存储在共享钥匙串(keychain)中。对于这样的事情,随机的 256 位 AES 对称 key 是完美的。一般来说,只要用户在设备上有密码,文件系统就会被加密,共享存储中的项目应该被认为是干净的。

另一种选择是使用共享存储作为直通;我们在我们的应用程序套件中这样做。一个应用程序会将一个加密文件放在共享存储中,然后使用文件 URI 和加密 key 调用我们套件中的另一个应用程序。接收应用会将文件复制到其本地存储中,删除共享文件,然后解密本地文件。

关于ios - NSUserDefaults initWithSuiteName 在删除应用程序后仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29783270/

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