zoukankan      html  css  js  c++  java
  • OC对象与Core Foundation对象的转换

    OC对象使用了ARC,自己主动释放内存,可是CF中的对象没有ARC,必需要手动进行引用计数和内存释放.

    两者对象之间的互相转换有三种形式:

    1.__bridge:

    直接转换,部改变对象的持有状况:

    id obj = [NSObject new];
    cfObject = (_bridge cfObject) obj;
    //不改变对象持有状况,cf对象不能获得obj的引用.
    id obc = (__bridge id)cfObject;
    //但obc是强引用,是被__strong修饰的,必然获得cf对象的强引用.

    2.CFBridgingRetain 和 __bridge_retained:

    转换得到的CF对象获得一个强引用,引用计数加1,须要人工的使用CFRelease来释放CF对象:

    cfobject = CFBridgingRetain(obj);
    //cfoject具有强引用,必须使用手工释放
    CFRelease(cfobject);


    3.CFBridgingReleasing和__bridge_transfer:

    将cf对象赋值给id时,释放CF对象本身的引用:

    id obj = (__bridge_transfer id)cfObject;
    //id拥有一个强引用,但cfObject本身的引用已经被释放了.



  • 相关阅读:
    象棋
    支持向量机
    朴素贝叶斯分类
    规则归纳
    监督学习
    序列模式
    关联规则
    从《数据挖掘概念与技术》到《Web数据挖掘》
    数据挖掘在大数据中的应用综述
    join sql图
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7026986.html
Copyright © 2011-2022 走看看