#import "ViewController.h" #import <Foundation/Foundation.h> #import <CoreFoundation/CoreFoundation.h> @interface ViewController () @end @implementation ViewController const void* EOCRetainCallback (CFAllocatorRef allocator , const void *value){ return CFRetain(value); } void EOCReleaseCallback(CFAllocatorRef allocator , const void *value){ CFRelease(value); } CFDictionaryKeyCallBacks keyCallbacks = { 0, EOCRetainCallback, EOCReleaseCallback, NULL, CFEqual, CFHash }; CFDictionaryValueCallBacks valueCallbacks = { 0, EOCRetainCallback, EOCReleaseCallback, NULL, CFEqual, }; - (void)viewDidLoad { [super viewDidLoad]; //無縫橋接::Foundation框架中的OC類和定義於CoreFoundation框架中的C數據結構之間互相轉換 NSArray *array = @[@1,@2,@3,@4,@5]; CFArrayRef aCFArray = (__bridge CFArrayRef)array;//__bridge的意思是ARC仍然具有OC對象的全部,__bridge_retained則相反 NSLog(@"%li",CFArrayGetCount(aCFArray));//5 CFMutableDictionaryRef aCFDictionary = CFDictionaryCreateMutable(NULL, 0, &keyCallbacks, &valueCallbacks); NSMutableDictionary *anNSdictionary = (__bridge_transfer NSMutableDictionary *)aCFDictionary;//C轉換爲OC } @end