Ios 卸载应用程序时如何删除密钥链数据?

Ios 卸载应用程序时如何删除密钥链数据?,ios,objective-c,keychain,Ios,Objective C,Keychain,我有个问题。我正在为我的应用程序在设备密钥链上保存一些关键信息,但当我卸载应用程序并再次安装时,这些数据仍然保存。卸载应用程序时,如何删除这些信息?如果这是不可能的,如何检测应用程序在安装后首次加载,而不在NSUserDefaults中保存信息 非常感谢。我不知道您为什么不想使用NSUserDefaults。它似乎非常适合这个目的 除非NSUserDefaults,否则您可以将文件写入Documents目录,并使用此文件的存在作为您的标志 我想我误解了你的问题。我假设你会一直使用钥匙链来存储安

我有个问题。我正在为我的应用程序在设备密钥链上保存一些关键信息,但当我卸载应用程序并再次安装时,这些数据仍然保存。卸载应用程序时,如何删除这些信息?如果这是不可能的,如何检测应用程序在安装后首次加载,而不在NSUserDefaults中保存信息


非常感谢。

我不知道您为什么不想使用
NSUserDefaults
。它似乎非常适合这个目的

除非
NSUserDefaults
,否则您可以将文件写入Documents目录,并使用此文件的存在作为您的标志


我想我误解了你的问题。我假设你会一直使用钥匙链来存储安全值

NSUserDefaults
中使用一个标志,表示您需要在首次启动时删除钥匙链



作为钥匙链的真正替代品,使用授权。

这是一种解决办法,但可能会让您满意: 存储在
NSUserDefaults
标志中,该钥匙链具有数据。
如果是
,则忽略钥匙链。

为什么不使用NSUserDefaults来存储应用程序是否首次启动?从设备中删除应用程序时,您无法执行任何操作,应用程序不会收到有关该事件的通知。因为我正在保存关键信息,我不希望有人可以使用任何程序作为iExplorer编辑首选项列表。如果有人改变任何价值观,后果可能非常严重bad@Paolpa,您这里的问题不是安全问题,您最初的问题是您想在删除/卸载应用程序时删除信息;这是不可能的。
NSUserDefault
不安全,将其存储在像他
KeyChain
这样的保存位置更有意义,因为
NSUserDefault
仅存储为纯文本。@rckoenes我更新了我的答案。我认为您希望使用数据保护。谢谢Jeffery Thomas,非常好的替代方案!您不应该对敏感数据(如密码或证书)使用NSUserDefaults。@orkoden,有人说过用NSUserDefaults存储密码吗?我不是。@ta.speot.is。谢谢你,船长。为什么-1?@ta.speot.is,你把答案删掉了吗?是一样的,但是比较短。对不起,我误解了你的答案。我不能收回我的否决票,因为我在几个小时前否决了你,但是如果你对你的答案做一个小的修改,我可以投上一票。