我正在尝试为CFDataRef
身份获取SecIdentityRef
持久性引用。但是,当使用apple提供的标准代码时,函数会返回CFDataRef
的0x0。输入参数不是零,但不知何故它不再起作用。代码用于完美地工作。
CFTypeRef persistent_ref;
CFDataRef persistentRefForIdentity(SecIdentityRef identity)
{
const void *keys[] = { kSecReturnPersistentRef, kSecValueRef };
const void *values[] = { kCFBooleanTrue, identity };
CFDictionaryRef dict = CFDictionaryCreate(NULL, keys, values, 2, NULL, NULL);
OSStatus status = SecItemAdd(dict, &persistent_ref); // `SecItemAdd` returns 0
if (dict)
CFRelease(dict);
return (CFDataRef)persistent_ref;
}
status
为0,但persistent_ref
仍然没有价值。
有谁知道出了什么问题?
答案 0 :(得分:1)
使CFTypeRef persistent_ref成为局部变量。或者在调用SecItemAdd函数之前确保将其设置为NULL。请参阅下面的代码。
^(1?\d{0,2})$