Objective-C 运行时编程指南 之 Interacting with the Runtime
来源:互联网 发布:英文原版书推荐 知乎 编辑:程序博客网 时间:2024/06/06 18:06
Objective-C程序与运行时系统在三个明显不同的层次进行交互:通过Objective-C源代码;通过定义在Foundation框架里的 NSObject 类中的方法;通过直接调用运行时方法。
2.1 Objective-C Source Code Objective-C源码
在大多数情况下,运行时系统都在幕后自动工作。你仅通过撰写和编译Objective-C源代码使用到它。
当你编译包含Objective-C类和方法的代码时,编译器创建数据结构和方法调用,实现语言的动态特性。数据结构捕获的相关信息可以在类和类别定义及协议声明中找到;在《The Objective-C Programming Language》 的《Defining a Class and Protocols》一章中论述了类和协议对象,以及方法选择器、实例变量模板和其他从源码中提取的信息。最重要的运行时方法是发送消息,称为Messaging。它被源码消息表达式引用。
2.2 NSObject Methods NSObject方法
Cocoa中大部分对象都是 NSObject 类的子类,因此大部分对象继承了它定义的方法。(值得关注的例外是 NSProxy 类;更多信息参见Message Forwarding章节。)所以它的方法确立起了每个实例和每个类对象的内在行为。但是,在少数情况下,NSObject 类只是定义了某些事情应该如何做的模板;它并没有提供它所需要的所有代码。
例如,NSObject 类定义了 description 实例方法,返回类内容的字符串描述。这个方法主要用于调试——GDB print-object 命令会打印这个方法返回的字符串。NSObject 这个方法的实现并不知道这个类包含了什么,所以它返回了这个对象的地址和名称。NSObject 的子类可以实现这个方法返回更多的详情。例如Foundation类的 NSArray 返回它包含的对象的描述列表。
某些 NSObject 方法简单的向运行时系统查询信息。这些方法允许对象做出反馈。这些方法的例子是 class 方法,会让对象定义自己的类;isKindOfClass: 和 isMemberOfClass: ,这两个方法可以测试对象在继承层级中的位置;respondsToSelector: ,这个方法可以指出一个对象是否可以接受一个特定的消息;conformsToProtocol: ,这个方法可以指出一个对象是否声明实现了某个特殊协议定义的方法; methodForSelector: ,这个方法提供了某个方法实现的地址。像这些方法给予对象内省其自身的能力。
2.3 Runtime Functions Runtime方法
运行时系统是一个带有公共接口的动态共享库,由一系列函数和数据结构组成,头文件放置在 /usr/include/objc 目录下。这些方法中许多允许你使用纯C语言重新获得在你编写Objective-C代码时编译器完成的工作。其他的方法成为了通过NSObject类方法出口的功能的基础。这些函数使得为运行时系统开发其他接口和制作增加开发环境的工具成为可能;而在用Objective-C编程时并不需要它们。但是,也有少数运行时方法可能在写Objective-C程序时偶尔有用。所有的这些方法都写在了《Objective-C Runtime Reference》之中。
- Objective-C 运行时编程指南 之 Interacting with the Runtime
- 与运行时交互(Interacting with the Runtime)
- Runtime ---Objective-C运行时编程指南
- Interacting with the Runtime
- [译]Objective-C Runtime Programming Guide - Interacting with the Runtime (一)
- Objective-C 运行时编程指南 之 Runtime Versions and Platforms Runtime
- Interacting with Objective-C APIs
- Objective-C运行时编程指南(Objective-C Runtime Programming Guide)
- objective-C运行时编程指南之运行时交互
- Objective-C运行时编程指南之介绍
- objective-C运行时编程指南之消息
- Objective-C运行时编程指南之动态方法决议
- Objective-C运行时编程指南之消息转发
- objective-C运行时编程指南之代理对象
- objective-C运行时编程指南之类型编码
- Objective-C 运行时编程指南 之 Introduction
- Objective-C 运行时编程指南 之 Messaging
- Objective-C 运行时编程指南 之 Dynamic Method Resolution
- hdu3062 Party 2-sat 基础题
- ADB(android debug bridge)常见命令
- Android应用瘦身,从18MB到12.5MB
- Scrapy 1.3.2
- nginx-初探
- Objective-C 运行时编程指南 之 Interacting with the Runtime
- Graph Valid Tree
- git建立本地仓库、gitHub上传项目以及git和gitHub的关系
- vlan间的路由(二)
- 牛腩(5)-SQL Server提示不允许保存更改问题解决
- iOS cell点击效果
- 内省操作javabean属性
- RTMP资料整理
- 静态链表 初始化 定位 Malloc Free 插入 删除