Приведение указателя с помощью ARC

В ARC возникают проблемы со следующим приведением:

NSDictionary *attributes;
SecItemCopyMatching((__bridge CFDictionaryRef)keychainItemQuery, (CFTypeRef *)&attributes);

Ошибка: приведение косвенного указателя к указателю Objective-C на 'CFTypeRef ' (также известное как 'const void * ') запрещено с помощью ARC

29
задан mmvie 19 October 2011 в 14:29
поделиться

1 ответ

Поскольку мы делали что-то похожее и использовали приведенный выше пример, мы столкнулись с другой проблемой:

CFDataRef resultRef;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary,
               (CFTypeRef *)&resultRef);
NSData* result = (__bridge_transfer NSData*)resultRef; 

Это приведет к EXEC_BAD_ACCESS, потому что resultRef не имеет никакого адреса и указывает куда-то на память.

CFDataRef resultRef = nil;

Это исправит ошибку.

6
ответ дан 28 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: