美文网首页
Cocoa Foundation & Core Foundati

Cocoa Foundation & Core Foundati

作者: March_Cullen | 来源:发表于2017-03-08 21:56 被阅读0次
    • 1.Cocoa Foundation:
      NSDictionary
      NSArray
      NSString

    • 2.Core Foundation:
      CFDictionaryRef
      CFArrayRef
      CFStringRef

    • 3.区别:

      • 3.1

        • 3.1.1 Core Foundation中的数据类型是纯C,不是面向对象;
        • 3.1.2 Cocoa Foundation中的常用的数据类型是OC,更加面向对象;
      • 3.2 它们都能进行字符串,数组,字典操作;

        • 3.2.1 Core Foundation使用C语言的函数操作;
        • 3.2.2 Cocoa Foundation使用面向对象操作的;
      • 3.3

        • 3.3.1 Core Foundation框架 (Core Foundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:
          • 3.3.1.1 群体数据类型 (数组,集合等);
          • 3.3.1.2 程序包;
          • 3.3.1.3 字符串管理;
          • 3.3.1.4 日期和时间管理;
          • 3.3.1.5 原始数据块管理;
          • 3.3.1.6 偏好管理;
          • 3.3.1.7 URL及数据流操作;
          • 3.3.1.8 线程和RunLoop;
          • 3.3.1.9 端口和socket通讯;
        • 3.3.2 Core Foundation框架和Cocoa Foundation框架紧密相关,它们为相同功能提供接口,但Cocoa Foundation框架提供Objective-C接口。如果您将Cocoa Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架之间的 “toll-free bridging”。所谓的Toll-free bridging是说您可以在某个框架的方法或函数同时使用Core Foundation和Cocoa Foundation框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对某个对象是否为toll-free bridged,应和什么对象桥接进行说明。
        • 3.3.3 在CocoaFoundation和CoreFoundation数据之间进行转换(没有任何内存管理,只是简单的转换)
    NSString *str = @”a”;
    CFStringRef str2 = (__bridge CFStringRef)(str);
    NSArray *array0 = [[NSArray alloc] init];
    CFArrayRef array1 = (__bridge_retained CFArrayRef)array0;
    [array0 release];
    CFArrayRef array2 = CFArrayCreate(NULL,NULL,10,NULL);
    NSArray *array3 = (__bridge_transfer NSArray *)array2;
    CFRelease(array2);
    *  (__bridge <#type#>)expression
    *  (__bridge_retained <#CF TYPE#>) expression
    // Foundation的数据类型 ----> CoreFoundation的数据类型
    *  (__bridge_transfer <#Objective-C type#>) expression
    // CoreFoundation的数据类型 ----> Foundation的数据类型
    

    相关文章

      网友评论

          本文标题:Cocoa Foundation & Core Foundati

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