我的iOS应用程序中有一个登录屏幕.NSUserDefaults当您再次进入应用程序时,用户名和密码将保存在再次加载到登录屏幕中(当然,这NSUserDefaults是永久性的).
现在,用户可以禁用用户名/密码保存功能.
那么NSUserDefaults将被清除.
但在我的应用程序中,我需要这个用户名/密码用于用户的数据库查询.那么:除了存储数据的位置NSUserDefaults?(当用户退出应用程序或注销时,可以/应该删除此位置).
我想知道是否有人使用SFHFKeychainUtils设法修改它们以兼容ARC.更确切地说
NSDictionary *attributeResult = NULL;
NSMutableDictionary *attributeQuery = [query mutableCopy];
[attributeQuery setObject: (id) kCFBooleanTrue forKey:(__bridge id) kSecReturnAttributes];
OSStatus status = SecItemCopyMatching((CFDictionaryRef) attributeQuery,(CFTypeRef *)(attributeResult));
Run Code Online (Sandbox Code Playgroud)
我试过了
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef) attributeQuery,(CFTypeRef *)(attributeResult));
Run Code Online (Sandbox Code Playgroud)
也
CFTypeRef subAttributeResult = (CFTypeRef *)(objc_unretainedPointer(attributeResult));
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef) attributeQuery,(CFTypeRef *)(subAttributeResult));
Run Code Online (Sandbox Code Playgroud)
这2个是我设法得到的唯一两种方法没有错误.通过在这里添加objc_XXX而不是CFTypeRef来实现任何其他方法并且在那里得到错误(从ARC中禁止从obj-c指针到CFTypeRef的隐式转换,将x参数传递给y参数丢弃限定符).显然,第一段代码也会出错.虽然构建时没有出现任何错误,但在到达此部分代码时,应用程序会因EXC_BAD_ACCESS而崩溃.
完整SFHFKeychainUtils的链接:https://github.com/ldandersen/scifihifi-iphone/tree/master/security
有什么帮助吗?谢谢.
iphone keychain ios automatic-ref-counting sfhfkeychainutils