什么是cocoa和cocoa Touch?iOS面试攻克篇(一)
‘写在前面的话’
这些是我对iOS面试时会碰到的问题的解决方法,整理出来分享给大家,有些错误不要
笑了,希望对大家有所帮助。大家有更好的解决办法也欢迎沟通交流。
一直以来都有写点儿东西的想法,就从笔记、从阅读开始吧,加油!’
1.先从概念方面来理解
1、框架层
Cocoa 是一种为 Mac OS X 应用程序提供丰富用户体验的框架,实际上是由3个框架组成:已知数值的Foundation框架,便于使用数据库存储和管理数据的 Core Data 框架,以及 Application Kit(AppKit) 框架。AppKit 框架提供了与窗口、按钮、列表等相关的类。使用示意图来说明最顶层应用程序与底层硬件之间的各个层次,如图所示:
(1)内核以设备驱动程序的形式提供与硬件的底层通信。它负责管理系统资源,包括调度需要执行的程序、管理内存和电源,以及执行基本的I/O操作。
(2)核心服务提供的支持比它上面的层次更加”核心“。例如,提供对集合、网络、调试、文件管理、文件夹、内存管理、线程、时间合电源的管理。
(3)应用服务层包含打印和图形渲染的支持,包括 Quartz、OpenGL 和 Quicktime 。
(4)Cocoa层位于应用程序之下。如图所示,Cocoa 包括 Foundation、 Core Data 和 AppKit 框架。Foundation框架提供处理集合、字符串、内存管理、文件系统、存档等相关的类。AppKit框架提供管理视图、窗口、文档和使 Mac OS X 闻名于世的多用户界面相关的类。
根据上面的描述,有些层的功能似乎有重复。Cocoa层和核心服务层中都存在集合。然而。后者是前者的基础。此外,某些情形也可以绕过或者”桥接“到某一层。例如***Foundatio***中有些类,比如处理文件系统的那些类直接依赖核心服务层的功能,实际上绕过了应用程序服务层。
2、Cocoa Touch
Cocoa框架应用与Mac OS X桌面与笔记本电脑应用程序的开发,而 Cocoa Touch 框架应用与iOS设备上应用程序的开发。Cocoa 和 Cocoa Touch 都有 Foundation 和 Core Data 框架,然而在 Cocoa Touch 下, UIKit 代替了 AppKit 框架,提供了很多相同的类型的对象支持、比如窗口、视图、按钮、文本域等。另外, Cocoa Touch 还提供使用陀螺仪和加速器(它与GPS和 WIFI 信号一样都能跟踪你的位置)的类和触摸式界面,去掉了不需要的类。
Cocoa Touch 框架推动了 iOS应用开发,为开发者提供了很多 Mac 平台上久经考验的模式,同时又特别专注于基于触摸的开发接口和性能优化。
大部分Cocoa Touch的功能是用Objective-C实现的,其中,UIKit 提供了开发 iOS 上的图形化事件驱动程序所需的基本工具。UIKit 基于 Foundation 框架,该框架同样存在于 Mac OS X 系统中,提供了文件处理、网络、字符串处理以及其他基础架构。除了UIKit之外,Cocoa Touch 包含创建世界一流 iOS 应用程序所需的所有框架,从 3D 图形、专业音频到网络,甚至提供特殊设备访问 API 以控制摄像机或从 GPS 硬件获取位置。Cocoa Touch 既包含只需要几行代码就可以完成全部任务的强大的 Objective-C 框架,也在需要时提供基础的 C 语言 API 来直接访问系统。这些框架示例包括:
'Core Animation':通过 'Core Animation',您就可以通过基于组合独立
图层的简单编程模型来创建丰富的用户体验。
'Core Audio:Core Audio'是播放、处理和录制音频的专业级技术,
能够轻松为您的应用程序添加强大的音频功能。
'Core Data:Core Data' 提供面向对象的数据管理解决方案,
该方案易于使用和理解,甚至可处理任何应用或大或小的数据模型。'
Cocoa Touch 框架还提供两种内存管理方式,一种自动内存计数ARC(Automatic Reference Counting ),另一种手动引用技术(manual reference counting)。对于后一种需要程序员自己retain和release,其原则是“责任落实”,谁创建了对象(或保留了以创建的对象),谁就是该对象的拥有方,不再使用时,则要负责释放该所有权。
3.编程语言
Objective-C是开发Cocoa和Cocoa Touch应用程序的本地语言,也是最重要的语言。但是Cocoa和Cocoa Touch应用程序也可以包含C++和ANSI C代码。另外,您也可以使用桥接Objective-C运行时的脚本语言—例如PyObjC和RubyCocoa—开发Cocoa应用程序。
4.cocoa与cocoa Touch区别之分:
两者都包含OC运行时的两个核心框架
cocoa 包含 Foundation 和 AppKit 框架,可用于开发 Mac OS X 系统的应用程序
cocoa touch 包含 Foundation 和 UIKit 框架,可用于开发 iPhone OS 系统的应用程序
Cocoa 是 Mac OS X 的开发环境,cocoa Touch 是 Iphone OS 的开发环境
### 总结:
cocoa
是苹果的面向对象开发环境,用来生成 Mac OS X 的应用程序。主要的开发语言为 Objective-c, 一个c 的超集。
cocoa touch
开发ios app的开发环境。
4、参考资料
部分摘录自《Objective-C程序设计(第4版)》——Stephen G. Kochan
http://baike.baidu.com/view/4171808.htm?fr=aladdin
谢谢你长的这么好看,还关注我!!!点个赞呗!!
这就是响应链相关的点,如果有什么不对的请留言提示,然后有什么别的需要改进的提示请联系我我会及时补充~
over.over.
部分文章来自转载书籍,如有侵权请联系作者删除
什么是cocoa和cocoa Touch?iOS面试攻克篇(一)相关推荐
- 分割view窗口不响应onmousewheel_什么是响应者链?ios面试攻克篇(三)
'写在前面的话' 这些是我对iOS面试时会碰到的问题的解决方法, 整理出来分享给大家,有些错误不要 太好笑,希望对大家有所帮助. 大家有更好的解决办法也欢迎沟通交流. 一直以来都有写点儿东西的想法, ...
- android 无appid分享_App ID 和Bundle ID 有什么不同?ios面试攻克篇(六)
'写在前面的话' 这些是我对iOS面试时会碰到的问题的解决方法,整理出来分享给大家,有些错误不要 笑了,希望对大家有所帮助.大家有更好的解决办法也欢迎沟通交流. 一直以来都有写点儿东西的想法,就从笔记 ...
- 2020年 面向高级开发人员的 iOS面试问题
在本文中,您将找到针对高级开发人员的iOS面试问题和解答. 当您准备进行技术性的iOS面试时,重要的是要了解您可能会被问到的话题以及经验丰富的iOS开发人员的期望.这些问题被许多公司用来衡量iOS候选 ...
- iOS面试必备-iOS基础知识
近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内 ...
- 最基础、最全面的iOS面试题目
xingK 博客园 首页 新随笔 联系 订阅 管理 随笔 - 2 文章 - 0 评论 - 0 最基础.最全面的iOS面试题目 OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特 ...
- 2020年iOS面试反思总结
Object-C系列面试题总结 基础题: 1.Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么不要在category中重 ...
- iOS面试指南(2020年6月)参考答案
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨zhangferry 来源丨iOS成长之路 上 ...
- [转] 上级向的十个iOS面试问题
上级向的十个iOS面试问题 转自 http://onevcat.com/2013/04/ios-interview/ 不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术 ...
- iOS面试准备 - ios篇
iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C++篇 iOS面试准备 - 其他篇 运行时 https://juejin. ...
最新文章
- 傅里叶卷积实现「万物隐身」,这个神器可试玩
- 利用UIWebView获取userAgent需要注意的地方
- VHD(Virtual Hard Disk)的解析(上篇)——PyVinil的使用
- boost::spirit模块实现展示不同容器类型的输出格式化的统一和简单的方法
- caffe,caffe2 and pytorch
- 5 重启应用_iphone8黑屏怎么办 iphone8黑屏重启方法【详细介绍】
- SAP License:结算金额大于可支配金额问题应对
- mockjs的介绍、基本使用和封装
- Intel 实习mentor布置问题1
- C语言——ASCII 码表及分类
- 中控考勤机忘记密码处理
- 基于组件开发——应用软件开发的革命
- mysql大于小于索引问题
- 关于图像打印的思考.
- 网易云音乐小程序 笔记
- [渝粤教育] 南京交通职业技术学院 计算机基础 参考 资料
- Python实现FFT及IFFT
- PC按键精灵读取txt文本出现乱码怎么办?按键精灵手机助手读取txt文本中文变问号怎么办?
- js获取手机品牌型号,系统型号等
- python基本语法学习笔记
热门文章
- 最常见的常用性能测试工具推荐
- DirectSound 钢琴(1)
- summernote 上传图片、删除图片
- 实验室LIMS系统能带来什么好处?
- JAVA学习笔记:java的高级特性(内部类)
- android app显示机器人,Android app图标总是显示默认的机器人图标,且在manifest文件的application中修改无效...
- vue-cli生成的spa项目js、css、fonts、images文件路径找不到
- 2009 SAP全球技术研发大会圆满落幕
- Jedis和JedisPool的使用
- Androidn报错:content.res.Resources android.content.Context.getResources()‘ on a null object参考