‘写在前面的话’
这些是我对iOS面试时会碰到的问题的解决方法,整理出来分享给大家,有些错误不要
笑了,希望对大家有所帮助。大家有更好的解决办法也欢迎沟通交流。
一直以来都有写点儿东西的想法,就从笔记、从阅读开始吧,加油!’


1.先从概念方面来理解

1、框架层

Cocoa 是一种为 Mac OS X 应用程序提供丰富用户体验的框架,实际上是由3个框架组成:已知数值的Foundation框架,便于使用数据库存储和管理数据的 Core Data 框架,以及 Application Kit(AppKit) 框架。AppKit 框架提供了与窗口、按钮、列表等相关的类。使用示意图来说明最顶层应用程序与底层硬件之间的各个层次,如图所示:

(1)内核以设备驱动程序的形式提供与硬件的底层通信。它负责管理系统资源,包括调度需要执行的程序、管理内存和电源,以及执行基本的I/O操作。

(2)核心服务提供的支持比它上面的层次更加”核心“。例如,提供对集合、网络、调试、文件管理、文件夹、内存管理、线程、时间合电源的管理。

(3)应用服务层包含打印和图形渲染的支持,包括 Quartz、OpenGLQuicktime

(4)Cocoa层位于应用程序之下。如图所示,Cocoa 包括 FoundationCore DataAppKit 框架。Foundation框架提供处理集合、字符串、内存管理、文件系统、存档等相关的类。AppKit框架提供管理视图、窗口、文档和使 Mac OS X 闻名于世的多用户界面相关的类。

根据上面的描述,有些层的功能似乎有重复。Cocoa层和核心服务层中都存在集合。然而。后者是前者的基础。此外,某些情形也可以绕过或者”桥接“到某一层。例如***Foundatio***中有些类,比如处理文件系统的那些类直接依赖核心服务层的功能,实际上绕过了应用程序服务层。

2、Cocoa Touch

Cocoa框架应用与Mac OS X桌面与笔记本电脑应用程序的开发,而 Cocoa Touch 框架应用与iOS设备上应用程序的开发。CocoaCocoa Touch 都有 FoundationCore Data 框架,然而在 Cocoa Touch 下, UIKit 代替了 AppKit 框架,提供了很多相同的类型的对象支持、比如窗口、视图、按钮、文本域等。另外, Cocoa Touch 还提供使用陀螺仪和加速器(它与GPSWIFI 信号一样都能跟踪你的位置)的类和触摸式界面,去掉了不需要的类。
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 包含 FoundationAppKit 框架,可用于开发 Mac OS X 系统的应用程序
cocoa touch 包含 FoundationUIKit 框架,可用于开发 iPhone OS 系统的应用程序
CocoaMac OS X 的开发环境,cocoa TouchIphone 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面试攻克篇(一)相关推荐

  1. 分割view窗口不响应onmousewheel_什么是响应者链?ios面试攻克篇(三)

    '写在前面的话' 这些是我对iOS面试时会碰到的问题的解决方法, 整理出来分享给大家,有些错误不要 太好笑,希望对大家有所帮助. 大家有更好的解决办法也欢迎沟通交流. 一直以来都有写点儿东西的想法, ...

  2. android 无appid分享_App ID 和Bundle ID 有什么不同?ios面试攻克篇(六)

    '写在前面的话' 这些是我对iOS面试时会碰到的问题的解决方法,整理出来分享给大家,有些错误不要 笑了,希望对大家有所帮助.大家有更好的解决办法也欢迎沟通交流. 一直以来都有写点儿东西的想法,就从笔记 ...

  3. 2020年 面向高级开发人员的 iOS面试问题

    在本文中,您将找到针对高级开发人员的iOS面试问题和解答. 当您准备进行技术性的iOS面试时,重要的是要了解您可能会被问到的话题以及经验丰富的iOS开发人员的期望.这些问题被许多公司用来衡量iOS候选 ...

  4. iOS面试必备-iOS基础知识

    近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内 ...

  5. 最基础、最全面的iOS面试题目

    xingK 博客园 首页 新随笔 联系 订阅 管理 随笔 - 2  文章 - 0  评论 - 0 最基础.最全面的iOS面试题目 OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特 ...

  6. 2020年iOS面试反思总结

    Object-C系列面试题总结 基础题: 1.Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么不要在category中重 ...

  7. iOS面试指南(2020年6月)参考答案

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨zhangferry 来源丨iOS成长之路 上 ...

  8. [转] 上级向的十个iOS面试问题

    上级向的十个iOS面试问题 转自 http://onevcat.com/2013/04/ios-interview/ 不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术 ...

  9. iOS面试准备 - ios篇

    iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C++篇 iOS面试准备 - 其他篇 运行时 https://juejin. ...

最新文章

  1. 傅里叶卷积实现「万物隐身」,这个神器可试玩
  2. 利用UIWebView获取userAgent需要注意的地方
  3. VHD(Virtual Hard Disk)的解析(上篇)——PyVinil的使用
  4. boost::spirit模块实现展示不同容器类型的输出格式化的统一和简单的方法
  5. caffe,caffe2 and pytorch
  6. 5 重启应用_iphone8黑屏怎么办 iphone8黑屏重启方法【详细介绍】
  7. SAP License:结算金额大于可支配金额问题应对
  8. mockjs的介绍、基本使用和封装
  9. Intel 实习mentor布置问题1
  10. C语言——ASCII 码表及分类
  11. 中控考勤机忘记密码处理
  12. 基于组件开发——应用软件开发的革命
  13. mysql大于小于索引问题
  14. 关于图像打印的思考.
  15. 网易云音乐小程序 笔记
  16. [渝粤教育] 南京交通职业技术学院 计算机基础 参考 资料
  17. Python实现FFT及IFFT
  18. PC按键精灵读取txt文本出现乱码怎么办?按键精灵手机助手读取txt文本中文变问号怎么办?
  19. js获取手机品牌型号,系统型号等
  20. python基本语法学习笔记

热门文章

  1. 最常见的常用性能测试工具推荐
  2. DirectSound 钢琴(1)
  3. summernote 上传图片、删除图片
  4. 实验室LIMS系统能带来什么好处?
  5. JAVA学习笔记:java的高级特性(内部类)
  6. android app显示机器人,Android app图标总是显示默认的机器人图标,且在manifest文件的application中修改无效...
  7. vue-cli生成的spa项目js、css、fonts、images文件路径找不到
  8. 2009 SAP全球技术研发大会圆满落幕
  9. Jedis和JedisPool的使用
  10. Androidn报错:content.res.Resources android.content.Context.getResources()‘ on a null object参考