所谓的Toll-free bridging是说可以在某个框架的方法或函数同时使用Core Foundatio和Foundation 框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对某个对象是否为 toll-Free bridged,应和什么对象桥接进行说明。类型转换关键字区别:
- __bridge (相当于assign,还是要自己管理对象)
- __bridge_transfer(相当于copy后release,转让了自己对对象的所有权交给别人去管理)
- __bridge_retained(相当于retain,增加额对象的引用计数)
同时也要注意在没有ARC和xcode4.2后加入ARC的使用时的区别
更多内容见Lancy的 这篇讲解 和苹果的文档 Toll-Free Bridging 。
Ref:
- http://blog.ibireme.com/2015/05/18/runloop/
- https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html
- http://chun.tips/blog/2014/10/20/zou-jin-run-loopde-shi-jie-%5B%3F%5D-:shi-yao-shi-run-loop%3F/
- Toll-free bridged: http://gracelancy.com/blog/2014/04/21/toll-free-bridging/
- 调用栈: http://blog.chinaunix.net/uid-20760757-id-1872359.html
- RunLoop源代码: http://opensource.apple.com/source/CF/CF-855.17/CFRunLoop.c
- http://blog.cnbluebox.com/blog/2014/07/01/cocoashen-ru-xue-xi-nsoperationqueuehe-nsoperationyuan-li-he-shi-yong/
原文 http://www.calios.gq/2016/02/29/Toll-Free bridging/