CFDictionary In Swift

** # 浅谈CFDictionary In Swift **

Access low-level functions, primitive data types, and various collection types that are bridged seamlessly with the Foundation framework.
意思是他是一套底层的API,拥有原始的数据类型,各种与Foundation无缝结合的全集

首先来回顾一下OC中使用CFDictionary的基本用法

    CFMutableDictionaryRef dict = CFDictionaryCreateMutable(CFAllocatorGetDefault(), 0, NULL, NULL) ;
    NSString *nameKey = @"name" ;
    NSString *name = @"007" ;
    CFDictionaryAddValue(dict, (__bridge void *)nameKey, (__bridge void *)name) ;
    const void *result = CFDictionaryGetValue(dict, (__bridge void *)nameKey) ;
    NSLog(@"姓名:%@",(__bridge NSString *)result) ;
    CFRelease(dict) ;

轻车熟路,很简单基本的一个用法,那么在swift中又是怎么使用的呢?

    let dict = CFDictionaryCreateMutable(defaultAllocator, 0, nil, nil)
    let key = Unmanaged.passRetained("name" as NSString).autorelease().toOpaque()
    let value = Unmanaged.passRetained("007" as NSString).autorelease().toOpaque()
    CFDictionaryAddValue(dict, key, value)
    if let p = CFDictionaryGetValue(dict, key) {
        let result = Unmanaged<NSString>.fromOpaque(p).takeUnretainedValue()
        print(result)
    }

以上就是CFDictionary在OC与Swift中的差别
基本上Core Foundation中出现的UnsafeRawPointer你都可以看成它是Unmanged<T>的指针,通过toOpaque()与fromOpaque()来转换,从而从其中得到实际存储的值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容