IOS之Core Foundation框架和Cocoa Foundation框架的区别
Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:
群体数据类型 (数组、集合等)
程序包
字符串管理
日期和时间管理
原始数据块管理
偏好管理
URL及数据流操作
线程和RunLoop
端口和soket通讯
Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供Objective-C接口。如果您将Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架之间的 “toll-free bridging”。所谓的Toll-free bridging是说您可以在某个框架的方法或函数同时使用Core Foundatio和Foundation 框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对某个对象是否为 toll-free bridged,应和什么对象桥接进行说明。
如需进一步信息,请阅读Core Foundation 框架参考。
Objective-C指针与CoreFoundation指针之间的转换】
ARC仅管理Objective-C指针(retain、release、autorelease),不管理CoreFoundation指针,CF指针由人工管理,手动的CFRetain和CFRelease来管理,注,CF中没有autorelease。
CocoaFoundation指针与CoreFoundation指针转换,需要考虑的是所指向对象所有权的归属。ARC提供了3个修饰符来管理。
1. __bridge,什么也不做,仅仅是转换。此种情况下:
i). 从Cocoa转换到Core,需要人工CFRetain,否则,Cocoa指针释放后, 传出去的指针则无效。
ii). 从Core转换到Cocoa,需要人工CFRelease,否则,Cocoa指针释放后,对象引用计数仍为1,不会被销毁。
2. __bridge_retained,转换后自动调用CFRetain,即帮助自动解决上述i的情形。
2. __bridge_transfer,转换后自动调用CFRelease,即帮助自动解决上述ii的情形。
转载于:https://www.cnblogs.com/Free-Thinker/p/10438508.html
IOS之Core Foundation框架和Cocoa Foundation框架的区别相关推荐
- iOS系统整体框架及类继承框架图
iOS系统整体框架及类继承框架图 文章目录 iOS系统整体框架及类继承框架图 前言 一.系统架构 二.Cocoa框架 三.Cocoa框架的类继承体系 1.Foundation框架类继承体系 2.UIK ...
- 2019 - iOS最新最全面试题梳理(内含框架和算法题)
内存中的区域划分 栈区(stack):由系统自动分配和释放,存放局部变量的值,容量小速度快,有序 堆:一般由程序员分配和释放,如果不释放,则出现内存泄露.程序会回收您的内存,特点:容量大,速度慢,无序 ...
- iOS开发:Core Animation编程指南
关于Core Animation Core Animation是iOS与OS X平台上负责图形渲染与动画的基础设施.Core Animation可以动画视图和其他的可视元素.Core Animatio ...
- IOS 传感器Core Motion相关简述
由于公司要求,了解了一下IOS上传感器数据的处理方式,在此作为记录. Core Motion Core Motion是IOS提供的一个封装好的框架,核心运动框架,可以很方便地获取基本九轴传感器的数据( ...
- ios开发愤怒的小鸟的Lua语言:Wax框架详解(一)
核心提示:我们都知道Objective-C和Cocoa语言可以开发iOS应用,但是一年前,苹果决定在iOS系统上使用Lua语言.Wax框架的想法很简单:凡是Objective-C能做的,Lua也能做! ...
- 依赖注入的三种方式_ASP.NET Core技术研究-探秘依赖注入框架
ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET ...
- Dora.Interception: 一个为.NET Core度身定制的AOP框架
多年从事框架设计开发使我有了一种强迫症,那就是见不得一个应用里频繁地出现重复的代码.之前经常Review别人的代码,一看到这样的程序,我就会想如何将这些重复的代码写在一个地方,然后采用"注入 ...
- ASP.NET Core技术研究-探秘依赖注入框架
ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET ...
- 从头编写 asp.net core 2.0 web api 基础框架 (2)
上一篇是: 从头编写 asp.net core 2.0 web api 基础框架 (1) Github源码地址是: https://github.com/solenovex/Building-asp. ...
- Socket在iOS客户端上的简单实现 - 利用GCAsyncSocket框架
Socket在iOS客户端上的简单实现 - 利用GCAsyncSocket框架 GCAsyncSocket 这是一个2003的开发出来的一个开源框架 首先把GCDAsyncSocket的.h和.m文件 ...
最新文章
- 遇到的仍未学习的各种结论
- MyBatis源码骨架分析
- Scala入门到精通——第二十一节 类型参数(三)-协变与逆变
- LeetCode 321. 拼接最大数(单调栈)*
- 不恢复余数除法原理_青岛版二年级下册数学寒假预习:有余数的除法自主练习答案及讲解...
- JDK源码(21)-Unsafe
- ios 从assets加载图片_iOS 使用Assets.xcassets添加启动图和Icon
- 第 10 章 数组和指针
- 小学六年级学生写的 “线段树”解析,厉害了!
- 腾讯T4梳理的必备笔记:自动化测试必掌握的30个核心知识点
- HDU 1698 Just a Hook (线段树区间修改+区间查询)
- linux 下网站压力测试工具webbench
- docker重启容器
- Vue导出excel文件
- 玩与学 | 《乐高EV3机器人搭建与编程》
- Pascal 基础教程
- BI与SaaS碰撞,让数据处理更加轻松(下)
- 推荐一款搜索开源代码的神器 :Kooder!
- c语言单片机停车场收费系统,基于51单片机停车场车位引导系统设计
- 网页设计(HTML+CSS+Div)学习笔记
热门文章
- python环境精简版_【Python专题(一)】Python环境搭建
- 安装红帽linux显示半屏,在linux下模拟win+arrow来左右半屏当前窗口
- 字符串转换为小数(如String a=“123“),转换之后为123.0
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_08-vuejs研究-vuejs基础-v-if和v-for指令...
- win7下硬盘安装Windows
- JavaScript中的数据结构及实战系列(1):队列
- Ural1297 最长回文子串(后缀数组+RMQ)
- BZOJ 2734: [HNOI2012]集合选数( 状压dp )
- IOS: Xcode报 Undecleared selector Warning错误的解决方法
- UVa 10003 Cutting Sticks(区间DP)