我想獲得的用戶名/密碼,我的鑰匙串中。爲了這個,我遵循這個指南:的iOS:CFTypeRef不允許與ARC
但是,這部分是不允許用ARC:
NSData *result = nil;
OSStatus status = SecItemCopyMatching(
(CFDictionaryRef)searchDictionary,
(CFTypeRef *)&result);
我能做些什麼?
我想獲得的用戶名/密碼,我的鑰匙串中。爲了這個,我遵循這個指南:的iOS:CFTypeRef不允許與ARC
但是,這部分是不允許用ARC:
NSData *result = nil;
OSStatus status = SecItemCopyMatching(
(CFDictionaryRef)searchDictionary,
(CFTypeRef *)&result);
我能做些什麼?
ARC只管理Objective-C的類型。如果你投以核心基礎類型你必須告訴ARC誰擁有使用__bridge
,__bridge_retained
或__bridge_transfer
變量。
這裏有免費橋接Apple's official documentation ARC下,或看到this blog post(向下滾動到免費電話橋接)爲一個偉大的概述。
例如:
NSData *inData = nil;
CFTypeRef inTypeRef = (__bridge CFTypeRef)inData;
OSStatus status = SecItemCopyMatching(
(__bridge CFDictionaryRef)searchDictionary,
&inTypeRef);
CFTypeRef inData = NULL;
OSStatus status = SecItemCopyMatching(
(__bridge CFDictionaryRef)searchDictionary,
& inData);
NSData *data = (__bridge NSData *)inData;
「試試這個」,因爲它並不能說明什麼是錯的,如何解決是不是很有用它在另一種情況下。 – 2015-12-02 11:03:55
謝謝西蒙。我已經使用'__bridge'但'(CFTypeRef *)結果);'它沒有工作.. Xcode中注意到:不兼容的類型鑄造 '的NSData * __ *強' 到 'CFTypeRef *'(又名 '常量無效**')用__bridge投 – filou 2012-04-20 20:37:04
從您提領分離出你的施法。就像這樣:'CFTypeRef r =(__bridge CFTypeRef)結果; OSStatus狀態= SecItemCopyMatching((__橋CFDictionaryRef)searchDictionary,&r);' – 2012-04-20 21:09:46
沒有工作。出於某種原因leelang解決方案做了。的Xcode 7.3 – 2016-04-22 08:06:10