- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Cocoa框架是 iOS应用程序的基础,了解 Cocoa框架,对开发 iOS应用有很大的帮助。
1、Cocoa是什么?
Cocoa是 OS X和 iOS 操作系统的程序的运行环境。
是什么因素使一个程序成为 Cocoa程序呢?不是编程语言,因为在 Cocoa开发中你可以使
用各种语言;也不是开发工具,你可以在命令行上就可以创建 Cocoa程序。Cocoa程序可
以这么说,它是由一些对象组成,而这些对象的类最后都是继承于它们的根类 :NSObject。
而且它们都是基于 Objective-C运行环境的。
1.1、Cocoa框架
iOS中,Cocoa众多框架中最重要最基本的两个框架是:Foundation 和 UIKit。
Foundation 和界面无关,也可以说和界面无关的类基本是 Foundation框架的,和界面相关
的是 UIKit框架。
这两个框架在系统中处于的位置如图:
1.2、Foundation框架
好吧,那我们看看两个框架的类组织架构图,第一个先看 Foundation的,三个图,包括了
Foundation所以的类,图中灰色的是 iOS不支持的,灰色部分是 OS X系统的。
将上图 Foundation框架中的类进行逻辑分类如下:
1. 值对象
2. 集合
3. 操作系统服务 包括下面三个:文件系统和 URL 进程间通讯。 这个范畴中的
大部分类代表不同的系统端口、套接字、和名字服务器,对实现底层的 IPC很有
用。NSPipe代表一个 BSD管道,即一种进程间的单向通讯通道。 线程和子
任务。 NSThread类使您可以创建多线程的程序,而各种锁(lock)类则为彼此
竞争的线程在访问进程资源时提供各种控制机制。通过 NSTask,您的程序可以
分出 一个子进程来执行其它工作或进行进度监控。
4. 通知
5. 归档和序列化
6. 表达式和条件判断
7. Objective-C语言服务
1.3 UIKit框架
应用程序可以通过三种方式使用 UIKit创建界面
1. 在用户界面工具(interface Buidler)从对象库里 拖拽窗口,视图或者其他的
对象使用。
2. 用代码创建
3. 通过继承 UIView类或间接继承 UIView类实现自定义用户界面
框架类组织架构图:
在图中可以看出,responder 类是图中最大分支的根类,UIResponder为处理响应事件和
响应链 定义了界面和默认行为。当用户用手指滚动列表或者在虚拟键盘上输入时,UIKit
就生成时间传送给 UIResponder响应链,直到链中有对象处理这个事件。相应的核心对象,
比如:UIApplication ,UIWindow,UIView都直接或间接的从 UIResponder继承。
2、Cocoa对象
2.1 Objective-C是面向对象的语言
Objective-C和 Java C++一样,有封装,继承,多态,重用。但是它不像 C++那样有重载
操作法、模版和多继承,也没有 Java的垃圾回收机制。
2.2 Objective-C的优点
Objective-C语言有 C++ Java等面向对象的特点,那是远远不能体现它的优点的。
Objective-C的优点是它是动态的。动态能力有三种:
动态类-运行时确定类的对象
动态绑定-运行时确定要调用的方法
动态加载--运行时为程序加载新的模块
2.3 动态能力相关的 isa指针
每个 Objective-C对象都有一个隐藏的数据结构,这个数据结构是 Objective-C 对象的第一
个成员变量,它就是 isa指针。这个指针指向哪呢?它指向一个类对象(class object 记住
它是个对象,是占用内存空间的一个变量,这个对象在编译的时候编译器就生成了,专门来
描述某个类的定义),这个类对象包含了 Objective-C对象的一些信息(为了区分两个对象,
我把前面提到的对象叫 Objective-C对象),包括 Objective-C对象的方法调度表,实现了
什么协议等等。这个包含信息就是 Objective-C动态能力的根源了。
那我们看看 isa指针类型的数据结构是什么样的?如果抛开 NSObject对象的其他的成员数
据和变量,NSObject可以看成这样:
[cpp] view plaincopy
1. @interface NSObject NSObject {
2. Class isa;
3. }
不考虑@interface关键字在编译时的作用,可以把 NSObject更接近 C语言结构表示
文档评论(0)