设为首页 - 加入收藏 焦点技术网
热搜:java
当前位置:首页 >

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

2016-04-04 09:53:26.0 java  
导读:本文阿元给大家介绍 OC高效率52之"无缝桥接"。#import "ViewController.h" #import <Foundation/Foundation。。。
#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


(编辑: 阿元)

网友评论
相关文章