zoukankan      html  css  js  c++  java
  • CocoaFoundation和CoreFoundation之间数据转换(桥接__bridge)

    ARC仅管理Objective-C指针(retain、release、autorelease),不管理CoreFoundation指针,CF指针由人工管理,手动的CFRetain和CFRelease来管理,注,CF中没有autorelease。

    CocoaFoundation指针与CoreFoundation指针转换,需要考虑的是所指向对象所有权的归属。ARC提供了3个修饰符来管理。

    1. __bridge,什么也不做,仅仅是转换。此种情况下:

       i). 从Cocoa转换到Core,需要人工CFRetain,否则,Cocoa指针释放后, 传出去的指针则无效。

       ii). 从Core转换到Cocoa,需要人工CFRelease,否则,Cocoa指针释放后,对象引用计数仍为1,不会被销毁。

    2. __bridge_retained,转换后自动调用CFRetain,即帮助自动解决上述i的情形。

    (__bridge_retained or CFBridgingRetain,arc把对象所有权转出,需CoreFoundation处理。)

    3. __bridge_transfer,转换后自动调用CFRelease,即帮助自动解决上述ii的情形。

    (__bridge_transfer or CFBridgingRelease,CoreFoundation把对象所有权交给arc,由arc自动处理。)

  • 相关阅读:
    在线pdm查看
    vscode
    idea for Mac 代码提示设置
    定位功能
    canvas刮奖
    jquery生成二维码
    Redux DevTools浏览器插件调试redux
    .gitignore
    HBuilder在MAC下的SVN
    UMD编码规范
  • 原文地址:https://www.cnblogs.com/qingpeng/p/4568239.html
Copyright © 2011-2022 走看看