在沙盒 mac 应用程序卸载后删除 NSUserDefaults

Remove NSUserDefaults after sandboxes mac app uninstall

我有一个沙盒应用程序,它是从 Mac AppStore 安装的。

它写入NSUserDefaults。我原以为 NSUserDefaults 会在应用程序被删除时消失(与 iOS 沙盒应用程序的情况相同)。

然而,NSUserDefaults却挥之不去。因此,如果用户重新安装该应用程序,he/she 仍然可以访问 NSDefaults 中的相同内容(在我的情况下,这是负面影响)。

我想知道是否有一种方法(专门针对 AppStore 沙盒应用程序)在卸载时删除 NSUserDefaults

由于 macOS 通常允许您简单地通过将应用程序拖到废纸篓来删除应用程序,而不是让您 运行 成为卸载程序,因此无法强制执行诸如删除用户默认值之类的任务 运行 卸载时。

我个人认为这是一个功能,而不是错误;如果作为用户,我的应用程序已损坏并需要卸载并重新安装它,这不应该迫使我必须在此过程中重置与该应用程序关联的所有数据。但是YMMV.

如果这确实是个问题,您可以执行一些操作,例如在用户默认值中存储 NSURLContentModificationDateKeyNSURLAddedToDirectoryDateKey 的应用程序值,并在应用程序启动时测试它是否匹配。如果没有,则该应用程序可能已重新安装,您可以提议取消默认数据。不过,我真的建议在执行此操作之前设置一个对话框询问用户,因为在没有警告的情况下销毁一个人的数据是相当不 Mac 的,并且与您的许多用户所期望的相反(并且因为否则,每次他们将应用程序更新到更高版本时,您都会破坏他们的数据。