我有一个从Mac AppStore安装的沙盒应用程序。
它写入NSUserDefaults
。当应用程序被删除时,我期待NSUserDefaults
消失(与iOS沙盒应用程序相同的方式)。
然而,NSUserDefaults
仍然留在后面。因此,如果用户重新安装该应用程序,他/她仍然可以访问NSDefaults中的相同内容(在我的情况下,这是负面影响)。
我想知道是否有办法(特别是AppStore沙盒应用程序)在卸载时删除NSUserDefaults
。
答案 0 :(得分:1)
由于macOS通常允许您只是通过将应用程序拖到废纸篓而不是让您运行卸载程序来删除应用程序,因此无法在卸载时强制执行删除用户默认值等任务
我个人认为这是一个功能,而不是一个bug;如果我作为用户有一个应用程序已损坏并需要卸载并重新安装它,那么这不应该迫使我必须在此过程中重置与该应用程序关联的所有数据。但是YMMV。
如果这确实是一个问题,您可以执行类似的操作,例如在用户默认值中存储应用程序的NSURLContentModificationDateKey
或NSURLAddedToDirectoryDateKey
值,并在应用程序启动时测试是否匹配。如果它没有,则可能已重新安装该应用,您可以提供核实默认数据。我真的建议在执行此操作之前先设置一个询问用户的对话框,因为在没有警告的情况下销毁了一个人的数据非常类似Mac,与您的许多用户所期望的相反(而且,除非另有说明,否则每次将应用更新到更高版本时,您都会对其数据进行核对。)