ios类结构探究.pdfVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

希望之星 + 关注
实名认证
文档贡献者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档