私はコードを持っています(取り除かれています):
CFDictionaryRef *currentListingRef;
//declare currentListingRef here
NSDictionary *currentListing;
currentListing = (NSDictionary *) currentListingRef;
そして、私はエラーを受け取ります:
ARCでは、非Objective-Cポインター型 'CFDictionaryRef *'(別名 'const struct __CFDictionary **')から 'NSDictionary *'へのキャストは許可されていません
何が悪いのですか? CFDictionaryRef
からNSDictionary
に変換するにはどうすればよいですか?
ARCは、ブリッジングの動作を変更しました。
NSDictionary *original = [NSDictionary dictionaryWithObject:@"World" forKey:@"Hello"];
CFDictionaryRef dict = (__bridge CFDictionaryRef)original;
NSDictionary *andBack = (__bridge NSDictionary*)dict;
NSLog(@"%@", andBack);
ARCでは、次の方法でこれを行う必要があります。
CFDictionaryRef currentListingRef = ...;
NSDictionary *currentListing = CFBridgingRelease(currentListingRef);
これにより、CFオブジェクトが解放され、オブジェクトの所有権がARCに転送されます。それ以外の場合は、CFオブジェクトを手動で解放する必要があります。
このコードを試してください、
NSDictionary *ssidList = (__bridge NSDictionary*)myDict;
NSString *SSID = [ssidList valueForKey:@"SSID"];