Objective-C 20 运行时系统编程指南.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:18 大小:494KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Objective-C 20 运行时系统编程指南.pdf

Objective-C20运行时系统编程指南.pdf

预览

免费试读已结束,剩余 8 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

原文地址:http://www.apple.com.cn/developer/Documentation/index.htmlObjective-C2.0运行时系统编程指南概述本部分包括如下内容:本文档的组织结构参考Objective-C语言将决定尽可能的从编译和链接时推迟到运行时。只要有可能,Objective-C总是使用动态的方式来解决问题。这意味着Objective-C语言不仅需要一个编译器,同时也需要一个运行时系统来执行编译好的代码。这儿的运行时系统扮演的角色类似于Objective-C语言的操作系统,Objective-C基于该系统来工作。本文档将具体介绍NSObject类以及Objective-C程序是如何和运行时系统交互的。特别地,本文档还给出来怎样在运行时动态地加载新类和将消息转发给其它对象的范例,同时也给出了怎样在程序运行时获取对象信息的方法。通常,如果是仅仅写一个Cocoa程序,您不需要知道和理解Objective-C运行时系统的底层细节,但这篇文档仍然值得推荐您阅读一下,以了解Objective-C运行时系统的原理,并能更好的利用Objective-C的优点。本文档的组织结构本文档包括如下章节:“运行时系统的版本和平台”和运行时系统的交互”“消息”“动态方法解析”“消息转发”“类型编码”“属性声明”参考Objective-C2.0运行时系统参考库描述了Objective-C运行库的数据结构和函数接口。您的程序可以通过这些接口来和Objective-C运行时系统交互。例如,您可以增加一个类或者方法,或者获得所有类的定义列表等。Objective-C2.0程序设计语言介绍了Objective-C语言本身。Objective-C版本说明给出了在最近版本的MacOSX系统中关于Objecitive-C运行时系统的一些改动。运行时系统的版本和平台在不同的平台上Objective-C运行时系统的版本也不相同。整理:http://www.wikinese.com/forum/原文地址:http://www.apple.com.cn/developer/Documentation/index.html本部分包含如下内容:早期版本和现行版本平台早期版本和现行版本Objective-C运行时系统有两个已知版本:早期版本和现行版本。现行版本主要是Objective-C2.0及与其相关的新特性。早期版本的编程接口见Objective-C1运行时系统参考库;现行版本的编程接口见Objective-C2.0运行时系统参考库。在现行版本中,最显著的新特性就是实例变量是"健壮“(non-fragile)的:.在早期版本中,如果您改变类中实例变量的布局,您必须重新编译该类的所有子类。.在现行版本中,如果您改变类中实例变量的布局,您无需重新编译该类的任何子类。此外,现行版本支持声明property的synthesis属性(参考Objective-C2.0程序设计语言的属性一节)。平台iPhone程序和MacOSXv10.5及以后的系统中的64位程序使用的都是Objective-C运行时系统的现行版本。其它情况(MacOSX系统中的32位程序)使用的是早期版本。和运行时系统的交互Objective-C程序有三种途径和运行时系统交互:通过Objective-C源代码;通过Foundation框架中类NSObject的方法;通过直接调用运行时系统的函数。本部分包含如下内容:通过Objective-C源代码通过类NSObject的方法通过运行时系统的函数通过Objective-C源代码大部分情况下,运行时系统在后台自动运行,您只需编写和编译Objective-C源代码。当您编译Objective-C类和方法时,编译器为实现语言动态特性将自动创建一些数据结构和函数。这些数据结构包含类定义和协议类定义中的信息,如在Objective-C2.0程序设计语言中定义类和协议类一节所讨论的类的对象和协议类的对象,方法选标,实例变量模板,以及其它来自于源代码的信息。运行时系统的主要功能就是根据源代码中的表达式发送消息,如"消息”一节所述。通过类NSObject的方法Cocoa程序中绝大部分类都是NSObject类的子类,所以大部分都继承了NSObject类的方法,因而继承了NSObject的行为。(NSProxy类是个例外;更多细节参考““消息转发”一节。)然而,某些情况下,NSObject类仅仅定义了完成某件事情的模板,而没有提供所