OC高效率52之"无缝桥接"

#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
相关文章
相关标签/搜索