美文网首页
Core Foundation 对象的内存管理(一)

Core Foundation 对象的内存管理(一)

作者: 奋斗的DevAmos | 来源:发表于2017-03-28 14:50 被阅读41次

    1.    底层的CoreFoundation对象,大多数以XxxCreatteWithXxx这样的方式创建

    // 创建一个CFStringRef 对象

    CFStringRef str = CFStringCreateWithCString(kCFAllocatorDefault, "hello world", kCFStringEncodingUTF8);

    // 创建一个CGFontRef

    CGFontRef fontRef = CGFontCreateWithFontName((CFStringRef)@"ArialMT");

    //对于这些对象的引用计数的修改,要相应地修改CFRetain和CFRelease

    // 引用计数加1

    CFRetain(fontRef);

    // 引用计数减1

    CFRetain(fontRef);

    2.在ARC下,我们有时需要将一个Core Foundation对象转换成一个Object-C对象,这就引入了与bridge相关的关键字,以下是这些关键字的说明

    1.__bridge:只做类型转换,不修改相关对象的引用计数,原来的Core Foundation对象不用时,需要调用CFRelease方法;

    2.__bridge_retained:类型转换后,将该对象的引用计数加1,原来的Core Foundation对象不用时,需要调用CFRelease方法;

    3.__bridge_transfer:类型转换后,将该对象的引用计数交给ARC管理,Core Foundation对象在不用时,不再需要调用CFRelease方法

    后续我们会根据具体的业务逻辑,具体介绍上面的三种类型转换关键字.


    相关文章

      网友评论

          本文标题:Core Foundation 对象的内存管理(一)

          本文链接:https://www.haomeiwen.com/subject/ghmjottx.html