我想知道是否有人使用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
我创建了一个iOS 7密码副本,我有这个问题,我似乎无法解决.我需要将锁定屏幕视图放在其他所有内容之上,因此应用程序在iOS的多任务视图中有所涉及,因此我将其直接添加到keyWindow
.到目前为止一切都很好.
当我必须显示锁定屏幕时,如果有一个alertView
或actionSheet
(alertView
在这篇文章中只提及s,为了保持简单),就会出现问题.已经多次回答过alertView
,iOS 7 中没有对s的引用,这是真的,它们显示的窗口是_UIModalItemHostingWindow
2 UIView
秒,实际上没有引用alertView
.
这_UIModalItemHostingWindow
也成为新的keyWindow
,所以它在其他一切之上,但[UIApplication sharedApplication].windows
如果我将锁定屏幕添加到我的前者keyWindow
(默认情况下keyWindow
,如果你愿意的话),它就无法在意义中找到,它将位于alertView
其暗淡的背景之下,所以用户在解雇之前不能与锁屏交互alertView
.另一个选项在下面进一步详述.
锁定屏幕的工作方式如下:在applicationDidEnterBackground
其上检查是否启用了密码; 如果它已启用并且密码持续时间为0(用户选择立即锁定应用程序),它会立即添加锁定屏幕,因此它会覆盖多任务视图中的应用程序.现在,我上面提到的选项是添加alertView
到这个_UIModalItemHostingWindow
窗口,但是当返回到应用程序时,锁定屏幕视图显示延迟1秒(即使我在进入后台之前添加了它!)和应用程序多任务处理视图中没有任何内容.(目前它也显示在错误的位置,如果你继续下载它,那是固定的,但我还没有推动提交).
我试图隐藏removeFromSuperview
这个_UIModalItemHostingWindow
,但是当回到应用程序时,alertView
动画仍然像刚刚被解雇一样运行.我怀疑上面提到的延迟也是由于Apple alertViews
回到前台时的处理方式.
我也尝试创建一个新窗口并使其成为新的keyWindow
,但同样的事情发生.
这是一个关于这个的小讨论,涵盖了我尝试的所有内容,也许我在这篇文章中遗漏了一些东西. https://github.com/rolandleth/LTHPasscodeViewController/issues/16
有任何想法吗?除了创建的每一个手动引用alertView
和actionSheet
我的应用程序里面,因为我试图找到密码库,而不是我自己的应用程序修复; 我可以找到脏的解决方法,没问题:)
更新:窗口_UIAlertOverlayWindow
是否actionSheet
使用而不是a alertView
,但就我所知,它的行为相同.