沙箱mac app uninstall卸载后删除NSUserDefaults

时间:2017-12-02 00:29:04

标签: macos uninstall

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

它写入NSUserDefaults。当应用程序被删除时,我期待NSUserDefaults消失(与iOS沙盒应用程序相同的方式)。

然而,NSUserDefaults仍然留在后面。因此,如果用户重新安装该应用程序,他/她仍然可以访问NSDe​​faults中的相同内容(在我的情况下,这是负面影响)。

我想知道是否有办法(特别是AppStore沙盒应用程序)在卸载时删除NSUserDefaults

1 个答案:

答案 0 :(得分:1)

由于macOS通常允许您只是通过将应用程序拖到废纸篓而不是让您运行卸载程序来删除应用程序,因此无法在卸载时强制执行删除用户默认值等任务

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

如果这确实是一个问题,您可以执行类似的操作,例如在用户默认值中存储应用程序的NSURLContentModificationDateKeyNSURLAddedToDirectoryDateKey值,并在应用程序启动时测试是否匹配。如果它没有,则可能已重新安装该应用,您可以提供核实默认数据。我真的建议在执行此操作之前先设置一个询问用户的对话框,因为在没有警告的情况下销毁了一个人的数据非常类似Mac,与您的许多用户所期望的相反(而且,除非另有说明,否则每次将应用更新到更高版本时,您都会对其数据进行核对。)