# 49、对自定义其内存管理语义的collection使用无缝桥接

```objectivec
NSArray *anNSArray = @[@1, @2, @3];
CFArrayRef aCFArray = (__bridge CFArrayRef)anNSArray;
CFArrayGetCount(aCFArray); // array.count
// __bridge: ARC仍拥有该OC对象的所有权
// __bridge_retained: ARC交出该OC对象的所有权，之后需要 CFRealease(aCFArray) 来释放
NSArray *anNSArray = (__bridge_transfer)aCFArray; // ARC获得所有权
```

无缝桥接必要性：因为`Foundation`框架中OC类所具备的某些功能，是`CoreFoundation`框架中的C语言数据结构所不具备的，反之亦然。

（具体使用，这里不再赘述了）

要点：

* 通过无缝桥接技术，可以在`Foundation`框架中昂的OC对象与`CoreFoundaton`框架中的C语言数据结构之间来回转换
* 在`CoreFoundation`层面创建`collection`时，可以指定许多回调函数，这些函数表示此collection应如何处理其元素。然后可运用无缝桥接技术，将其转换成具备特殊内存管理语义的OC `collection`
