Когда мы делали нечто похожее и использовали приведенный выше пример, мы столкнулись с другой проблемой:
CFDataRef resultRef;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary,
(CFTypeRef *)&resultRef);
NSData* result = (__bridge_transfer NSData*)resultRef;
Это приведет к EXEC_BAD_ACCESS, потому что resultRef не установлен на какой-либо адрес и указывает где-то в памяти.
CFDataRef resultRef = nil;
Это исправит ошибку.