Core Foundation 官方文档翻译
-(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);
}
官方定义:CFRange CFRangeMake(CFIndex loc, CFIndex len);
使用: CFRange cfRange = CFRangeMake(1, 3);
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" 会有很多选择器,选择自己需要的。
官方定义:typedef long CFIndex;
使用:CFIndex index = 5;
4
CFOptionFlags
用于将特殊分配和其他请求传递给Core Foundation功能的位域。
官方定义:typedef unsigned long CFOptionFlags;
a. kCFNotFound //当Core Foundation功能无法找到请求的值时,返回这个特殊值。
官方定义:static const CFIndex kCFNotFound = -1;
b. kCFCoreFoundationVersionNumber //当前Core Foundation库的版本号
官方定义:Command+光标进去看看就可以了。
延伸:Mac iOS平台关于Core Foundation库版本号的宏定义
官方定义: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的字节顺序(我也不明白到底是什么)。
将从主机中的64位double字节顺序转换为与平台无关的格式。
CFSwappedFloat64 sf64 = CFConvertDoubleHostToSwapped(10.0);//道行浅,不知道到底有什么用
延伸:CFConvertDoubleSwappedToHost
double CFConvertDoubleSwappedToHost(CFSwappedFloat64 arg);
和上面那个是逆向关系。

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;
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

Core Foundation 官方文档翻译的更多相关文章
- Core BlueTooth官方文档翻译
本⽂文是苹果<Core Bluetooth Programming Guide>的翻译. 关于Core Bluetooth Core Bluetooth 框架提供了蓝⽛牙低功耗⽆无线设备与 ...
- Foundation与Core Foundation内存管理基本原则简述
内存管理是一个十分重要的事情,稍有不慎就会发生内存泄漏或者是野指针的错误.内存泄漏一般表示没有任何指针指向的内存区域,由于这块内存在对象图中无法查找到,所以有可能永远都无法回收,如果内存泄漏的空间比较 ...
- Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET
OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...
- ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...
- Spring官方文档翻译(1~6章)
Spring官方文档翻译(1~6章) 转载至 http://blog.csdn.net/tangtong1/article/details/51326887 Spring官方文档.参考中文文档 一.S ...
- CALayer---iOS-Apple苹果官方文档翻译之CALayer
CHENYILONG Blog CALayer---iOS-Apple苹果官方文档翻译之CALayer CALayer /*技术博客http://www.cnblogs.com/ChenYilong/ ...
- iOS数据存取---iOS-Apple苹果官方文档翻译
CHENYILONG Blog iOS数据存取---iOS-Apple苹果官方文档翻译 数据存取/*技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http:// ...
- UIImagePickerController---iOS-Apple苹果官方文档翻译
//本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com ...
- 《从零开始学Swift》学习笔记(Day 62)——Core Foundation框架之内存托管对象与非托管对象
原创文章,欢迎转载.转载请注明:关东升的博客 内存托管对象 Swift中调用Core Foundation函数获得对象时候,对象分为:内存托管对象和内存非托管对象. 内存托管对象就是由编译器帮助管理内 ...
随机推荐
- Winform文件上传
近期在做了一个winform的项目的附件上传的需求 最初项目选型的时候有三种 1.使用webservice.webapi上传文件 2,直接保存在数据库中 3.使用共享目录+dos命令 第一种有文件大小 ...
- 剑指offer编程题Java实现——面试题3二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 下面是我实现的代码 ...
- 【问题解决方案】Keras手写数字识别-ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接
参考:台大李宏毅老师视频课程-Keras-Demo 在载入数据阶段报错: ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接 Google之 ...
- Git错误日志--! [rejected]
当出现下面错误时 ,是因为和仓库两端版本不一致时,常见于刚创建仓库时,中只有readme文件的情况.执行下面的运行完毕之后.再push到仓库即可 ! [rejected] master -> m ...
- [Vuejs] 组件 v-if 和 v-show 切换时生命周期钩子的执行
v-if 初始渲染 初始值为 false 组件不会渲染,生命周期钩子不会执行,v-if 的渲染是惰性的. 初始值为 true 时,组件会进行渲染,并依次执行 beforeCreate,created, ...
- Postgres 的 Array 类型
mysql 不支持 Array 类型 一.Postgres 原生SQL 适用场景:可以用于实现贴标签功能 1.定义 CREATE TABLE "Students" ( name V ...
- Java - Tips
001 - Java中print.printf与println的区别? printf:格式化输出,用来控制输出的格式. print:标准输出,不换行. println:标准输出,换行.例如,print ...
- mongodb副本集升级步骤
1. 先从Secondary开始升级,选择一个不繁忙节点在业务峰值低情况下升级2. 把Secondary设置为隐藏节点,停库,二进制升级重起3. 使用rs.status()查看,等待节点状态为Seco ...
- redis入门概述
一.是什么 redis:REmote DIctionary Server(远程字典服务器).是完全开源免费的,是用C语言编写的,遵守BSD协议,是一个高性能(key/value)分布式内存数据库,基 ...
- crontab命令使用文档.txt
基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...