Objective c SecItemDelete无限期阻塞

Objective c SecItemDelete无限期阻塞,objective-c,macos,security,keychain,xcode10,Objective C,Macos,Security,Keychain,Xcode10,我正试图使用SecItemDelete从钥匙链中删除存储的密码。我使用NSMutableDictionary创建了一个查询字典,然后在将其传递到SecItemDelete时将其桥接到CFDictionaryRef。但一旦我打了电话,它就再也不会回来,只是阻塞了线程。我从来没有经历过这样的事情,太奇怪了 NSMutableDictionary *query = [[NSMutableDictionary alloc] init]; query[(id)kSecClass] = (id)kSecCl

我正试图使用
SecItemDelete
从钥匙链中删除存储的密码。我使用
NSMutableDictionary
创建了一个查询字典,然后在将其传递到
SecItemDelete
时将其桥接到
CFDictionaryRef
。但一旦我打了电话,它就再也不会回来,只是阻塞了线程。我从来没有经历过这样的事情,太奇怪了

NSMutableDictionary *query = [[NSMutableDictionary alloc] init];
query[(id)kSecClass] = (id)kSecClassGenericPassword;
query[(id)kSecAttrService] = service;
query[(id)kSecAttrAccount] = account;

OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query);

是否有可能存在某种kSecAttrAccessControl设置,这可能会提示用户身份验证?不确定它为什么会被阻止。为kSecAttrAccessControl设置的属性是否会导致SecItemDelete被阻止?无论如何,我只设置了几个属性,除值数据外,所有属性都在查询字典中。如果访问控制设置为具有UI用户身份验证,则是,我认为呼叫可以阻止等待用户输入设备密码或触摸ID或其他内容。我可以想象删除和访问或更新是一样的。但我认为,在以前创建/更新记录时,必须明确设置该字段。我很难再去想其他可能会阻碍我的事情了。