Core Foundation框架中常用的隐含类型:
使用这些隐含类型时需要自己初始化,自己去释放内存。所以需要记住,在初始化的同时在相应位置释放。以防出现内存问题。
 
1.CFStringRef
其他方法用的时候可以查看文档

-(void)testCFStringref{

    CFStringRef stringRef = CFSTR("我'是'一'串'字'符'串");
CFStringRef seperatorStringRef = CFSTR("'");
CFArrayRef stringArrayRef = CFStringCreateArrayBySeparatingStrings(kCFAllocatorDefault, stringRef, seperatorStringRef); CFStringRef combineStringRef = CFStringCreateByCombiningStrings(kCFAllocatorDefault, stringArrayRef, CFSTR("|")); CFStringRef copyStringRef = CFStringCreateCopy(kCFAllocatorDefault, stringRef); NSLog(@"count = %ld combine: %@ copyStringRef:%@",CFArrayGetCount(stringArrayRef),combineStringRef,copyStringRef); CFRelease(stringRef);
CFRelease(seperatorStringRef);
CFRelease(stringArrayRef);
CFRelease(combineStringRef);
CFRelease(copyStringRef); }

2、 CFArrayRef,还有很多其他方法可以在官方文档中查看

-(void)testCFArrayRef{
//准换CFArrayRef < --- > NSArray
CFArrayRef cfArr = (__bridge CFArrayRef) @[@"",@"",@""];
NSArray *nsarr = (__bridge NSArray *)(cfArr); CFStringRef values[];
values[] = CFSTR("cf1");
values[] = CFSTR("cf2");
values[] = CFSTR("cf3"); //初始化一个CF数组
//不可变
CFArrayRef cfArray = CFArrayCreate(kCFAllocatorDefault,(void*)values, , NULL); CFArrayRef cfArrayCopyNew = CFArrayCreateCopy(kCFAllocatorDefault, cfArray); //可变
CFMutableArrayRef muArrayRef1 = CFArrayCreateMutable(kCFAllocatorDefault, , NULL);
//添加元素
CFArrayAppendValue(muArrayRef1, CFSTR("添加的第一个元素"));
CFArrayAppendValue(muArrayRef1, CFSTR("添加的第二个元素")); CFMutableArrayRef muArrayRef2 = CFArrayCreateMutableCopy(kCFAllocatorDefault, , muArrayRef1); NSLog(@"%ld %ld %ld %ld %ld %ld",CFArrayGetCount(cfArray),CFArrayGetCount(cfArr),nsarr.count,CFArrayGetCount(cfArrayCopyNew),CFArrayGetCount(muArrayRef1),CFArrayGetCount(muArrayRef2));
NSLog(@"%@ %@ %@ %@ %@ %@ ",CFArrayGetValueAtIndex(cfArr, ),CFArrayGetValueAtIndex(cfArray, ),nsarr[],CFArrayGetValueAtIndex(cfArrayCopyNew, ),CFArrayGetValueAtIndex(muArrayRef1, ),CFArrayGetValueAtIndex(muArrayRef2, )); //使用完需要release掉 CFRelease(cfArr);
CFRelease(values);
CFRelease(cfArray);
CFRelease(cfArrayCopyNew);
CFRelease(muArrayRef1);
CFRelease(muArrayRef2);
}

3.CFDictionaryRef & CFMutableDictionaryRef

-(void)testCFDictionaryRef{

    CFStringRef keys[];
CFStringRef values[];
keys[] = CFSTR("key1");
keys[] = CFSTR("key2");
keys[] = CFSTR("key3");
values[] = CFSTR("不可变数组ref value1");
values[] = CFSTR("不可变数组ref value2");
values[] = CFSTR("不可变数组ref value3"); CFDictionaryRef dictionaryRef1 = CFDictionaryCreate(kCFAllocatorDefault, (void *)keys, (void *)values,, NULL, NULL);
CFDictionaryRef dictionaryRef2 = CFDictionaryCreateCopy(kCFAllocatorDefault, dictionaryRef1); CFMutableDictionaryRef muDicRef1 = CFDictionaryCreateMutable(kCFAllocatorDefault, , NULL, NULL);
CFDictionaryAddValue(muDicRef1, CFSTR("key1"), CFSTR("可变数组ref value1"));
//0表示不限制个数
CFMutableDictionaryRef muDicRef2 = CFDictionaryCreateMutableCopy(kCFAllocatorDefault, , muDicRef1); NSLog(@"%@,%@,%@,%@",CFDictionaryGetValue(dictionaryRef1, CFSTR("key1")),CFDictionaryGetValue(dictionaryRef2, CFSTR("key1")),CFDictionaryGetValue(muDicRef1, CFSTR("key1")),CFDictionaryGetValue(muDicRef2, CFSTR("key1"))); //使用完要release
CFRelease(dictionaryRef1);
CFRelease(dictionaryRef2);
CFRelease(muDicRef1);
CFRelease(muDicRef2);
CFRelease(keys);
CFRelease(values);
}
 
未完,一个个看着呢

1
CFRange //类似于NSRange(第一个参数是起始位置,第二个参数是长度length)
官方定义:CFRange CFRangeMake(CFIndex loc, CFIndex len);
使用: CFRange cfRange = CFRangeMake(1, 3);
 
2. 
CFComparatorFunction  //回调函数比较两个值,返回值是CFComparisonResult类型。
     CFComparisonResult //是一个枚举类型:
         官方定义为:
     typedef CF_ENUM(CFIndex, CFComparisonResult) {
     kCFCompareLessThan = -1L,//<
     kCFCompareEqualTo = 0,//=
     kCFCompareGreaterThan = 1//>
     };
     typedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context);
     val1:第一个需要比较的value
     val2:第二个需要比较的value
     context:一个无类型的指针,指向评估的上下文。该值的含义及其用法由每个比较器函数定义。 该值通常传递给一个排序函数,例如CFArraySortValues,然后将其不变地传递给比较器函数。
     使用:输入"CFCompare" 会有很多选择器,选择自己需要的。

3.
     CFIndex 用于kAXPriorityKey的优先级值
     官方定义:typedef long CFIndex;
     使用:CFIndex index = 5;
    
   
4
    
     CFOptionFlags
     用于将特殊分配和其他请求传递给Core Foundation功能的位域。
     官方定义:typedef unsigned long CFOptionFlags;
 
5
常量:
     a. kCFNotFound //当Core Foundation功能无法找到请求的值时,返回这个特殊值。
     官方定义:static const CFIndex kCFNotFound = -1;
     b. kCFCoreFoundationVersionNumber //当前Core Foundation库的版本号
     官方定义:Command+光标进去看看就可以了。
     延伸:Mac iOS平台关于Core Foundation库版本号的宏定义
 
 6
CFByteOrder
     官方定义:typedef CFIndex CFByteOrder;
    
     #if CF_USE_OSBYTEORDER_H
     int32_t byteOrder = OSHostByteOrder();
     switch (byteOrder) {
     case OSLittleEndian: return CFByteOrderLittleEndian;
     case OSBigEndian: return CFByteOrderBigEndian;
     default: break;
     }
     return CFByteOrderUnknown;
     #else
     #if __LITTLE_ENDIAN__
     return CFByteOrderLittleEndian;
     #elif __BIG_ENDIAN__
     return CFByteOrderBigEndian;
     #else
     return CFByteOrderUnknown;
     #endif
     #endif
     使用:NSLog(@"%ld",CFByteOrderGetCurrent());
     获取当前CPU的字节顺序(我也不明白到底是什么)。
 
7
CFConvertDoubleHostToSwapped
     将从主机中的64位double字节顺序转换为与平台无关的格式。
     CFSwappedFloat64 sf64 = CFConvertDoubleHostToSwapped(10.0);//道行浅,不知道到底有什么用
    
     延伸:CFConvertDoubleSwappedToHost
     double CFConvertDoubleSwappedToHost(CFSwappedFloat64 arg);
     和上面那个是逆向关系。
下面这些属性,和上面这两个类似,用于类型转换:
 
8
    Core Foundation URL Access Utilities URL访问相关
     a. Boolean CFURLCreateDataAndPropertiesFromResource(CFAllocatorRef alloc, CFURLRef url, CFDataRef *resourceData, CFDictionaryRef *properties, CFArrayRef desiredProperties, SInt32 *errorCode);
     b. CFTypeRef CFURLCreatePropertyFromResource(CFAllocatorRef alloc, CFURLRef url, CFStringRef property, SInt32 *errorCode);
     c. Boolean CFURLDestroyResource(CFURLRef url, SInt32 *errorCode);
     d. Boolean CFURLWriteDataAndPropertiesToResource(CFURLRef url, CFDataRef dataToWrite, CFDictionaryRef propertiesToWrite, SInt32 *errorCode);
     const CFStringRef kCFURLFileLength;

9
CFURLError
     Declaration
    
     typedef enum CFURLError : CFIndex {
     kCFURLUnknownError = -10L,
     kCFURLUnknownSchemeError = -11L,
     kCFURLResourceNotFoundError = -12L,
     kCFURLResourceAccessViolationError = -13L,
     kCFURLRemoteHostUnavailableError = -14L,
     kCFURLImproperArgumentsError = -15L,
     kCFURLUnknownPropertyKeyError = -16L,
     kCFURLPropertyKeyUnavailableError = -17L,
     kCFURLTimeoutError = -18L
     } CFURLError;
10    
File URL Properties

Core Foundation 官方文档翻译的更多相关文章

  1. Core BlueTooth官方文档翻译

    本⽂文是苹果<Core Bluetooth Programming Guide>的翻译. 关于Core Bluetooth Core Bluetooth 框架提供了蓝⽛牙低功耗⽆无线设备与 ...

  2. Foundation与Core Foundation内存管理基本原则简述

    内存管理是一个十分重要的事情,稍有不慎就会发生内存泄漏或者是野指针的错误.内存泄漏一般表示没有任何指针指向的内存区域,由于这块内存在对象图中无法查找到,所以有可能永远都无法回收,如果内存泄漏的空间比较 ...

  3. Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET

    OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...

  4. ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...

  5. Spring官方文档翻译(1~6章)

    Spring官方文档翻译(1~6章) 转载至 http://blog.csdn.net/tangtong1/article/details/51326887 Spring官方文档.参考中文文档 一.S ...

  6. CALayer---iOS-Apple苹果官方文档翻译之CALayer

    CHENYILONG Blog CALayer---iOS-Apple苹果官方文档翻译之CALayer CALayer /*技术博客http://www.cnblogs.com/ChenYilong/ ...

  7. iOS数据存取---iOS-Apple苹果官方文档翻译

    CHENYILONG Blog iOS数据存取---iOS-Apple苹果官方文档翻译 数据存取/*技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http:// ...

  8. UIImagePickerController---iOS-Apple苹果官方文档翻译

    //本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址  //转载请注明出处--本文永久链接:http://www.cnblogs.com ...

  9. 《从零开始学Swift》学习笔记(Day 62)——Core Foundation框架之内存托管对象与非托管对象

    原创文章,欢迎转载.转载请注明:关东升的博客 内存托管对象 Swift中调用Core Foundation函数获得对象时候,对象分为:内存托管对象和内存非托管对象. 内存托管对象就是由编译器帮助管理内 ...

随机推荐

  1. 彻底卸载Oracle database 12c教程

    1.WIN+R,然后输入regedit,回车:2.在注册表中,进入目录:\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,删除所有以oracl ...

  2. 在WPF中将图片转换成3D图像并可以旋转

    时光偷走的,永远都是我们眼皮底下看不见的珍贵. https://pan.baidu.com/s/14dk-OU2SR0nxXj2bL4bVpQ 源码网站https://www.codeproject. ...

  3. 魔方Newlife.Cube权限系统的使用及模版覆盖详解

    讲人:大石头 时间:2018-11-14 晚上20:00 地点:钉钉群(组织代码BKMV7685)QQ群:1600800 内容:魔方Newlife.Cube权限系统的使用及模版覆盖详解 准备 源码地址 ...

  4. unity 人工智能AI,装备解锁临时笔记

    A*算法的一种改进设想:1.如何让角色到达目标点的过程中更加平滑:获取一串到达目标点的网格串之后,就实时用带形状的物理射线检测能否直接到达下一个目标点的再下一个目标点,如果能到达,那么直接朝该方向运动 ...

  5. 【转】ABP webapi三种方式

    作者:圣杰 链接:https://www.jianshu.com/p/d14733432dc2 來源:简书 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1. 引言 上一节我们 ...

  6. MVVM双向绑定实现之Object.defineProperty

    随着web应用的发展,直接操作dom的应用已渐行渐远,取而代之的是时下越来越流行的MVVM框架,dom操作几乎绝迹,这里面自然是框架底层封装的结果.MVVM框架的双向数据绑定使开发效率大大提高:然后在 ...

  7. 简单的C# Socket通信实例

    一.套接字(socket)概念 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本 ...

  8. wcf返回值报错解析

    问题来源 最近在项目中使用wcf,因为是一个新手,对新的东西总是比较敬畏,不过一切都是进行得很顺利,运行的时候,突然报了错,编译器提示的错误大概是:“InvalidOperationException ...

  9. select2插件使用小记2 - 多选联动 - 笔记

    这是select2插件使用的第二篇,可参考第一篇 select2插件使用小记.上一篇主要是关于基本的使用,这篇主要是关于多选,及联动的.侧重点不同. 效果图如下: 遵从W3C标准:结构.样式.行为.以 ...

  10. git log 高级用法

    转自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.3-Git-log%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95 内 ...