Runtime 运行时.pdfVIP

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

Runtime 运行时 写在前面 Obj ective-C语言是一门动态语言,它将很多静态语言 编译和链接 时期做的事放到了运行时来处理。这种动态语言的优势 于:我们写代码 时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换 一个方法的实现等。 这种特性意味着Obj ective-C不仅需要一个编译器,还需要一个运行时系统来执行 编译的代码。对于Obj ective-C来说,这个运行时系统就像一个操作系统一样 :它让所 有的工作可以正常的运行。这个运行时系统即Obj c Runtime。Obj c Runtime其实是一 个Runtime库,它基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力。 Runtime作用 封装 : 这个库中,对象可以用C语言中的结构体表示,而方法可以用C函数来实 现,另外再加上了一些额外的特性。这些结构体和函数被runtime函数封装后,我们 就可以 程序运行时创建,检查,修改类、对象和它们的方法了。 找出方法的最终执行代码 :当程序执行[obj ect doSomething]时,会向消息接收者 (obj ect)发送一条消息(doSomething),runtime会根据消息接收者是否能响应该消 息而做出不同的反应。这将 后面详细介绍。 Runtime的类和对象 class (类) Obj ective-C中的类是由Class类型来表示的,它实际上是一个指向obj c_class结构体的指 针。它的定义如下 : typedef struct objc_class *Class; 查看obj c/runtime.h中obj c_class结构体的定义如下 : struct objc_class { Class isa OBJC_ ISA_AVAILABILIT ; #if !__OBJC2__ Class super_class OBJC2_ UNAVAILABLE; const char *name OBJC2_ UNAVAILABLE; long version OBJC2_ UNAVAILABLE; long info OBJC2_ UNAVAILABLE; long instance_size OBJC2_ UNAVAILABLE; struct objc_ivar_ list *ivars OBJC2_ UNAVAILABLE; struct objc_ method_ list **methodLists OBJC2_ UNAVAILABLE; struct objc_cache *cache OBJC2_ UNAVAILABLE; struct objc_protocol_ list *protocols OBJC2_ UNAVAILABLE; #endif } OBJC2_ UNAVAILABLE; 1. isa :需要注意的是 Obj ective-C中,所有的类 自身也是一个对象,这个对象Class 里面也有一个isa指针,它指向metaClass(元类)。 2. super_class :指向该类的父类,如果该类已经是最顶层的根类(如NSObj ect或 NSProxy),则super_class为NULL。 3. cache :用于缓存最近使用的方法。一个接收者对象接收到一个消息时,它会根据 isa指针去查找能够响应这个消息的对象。 实际使用中,这个对象只有一部分方法 是常用的,很多方法其实很少用或者根本用不上。这种情况下,如果每次消息时,我 们都是met

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档