[OC Runtime编程指南_翻译]三、与运行时交互

简介: [OC Runtime编程指南_翻译]三、与运行时交互

Objective-C程序在三个不同的层次与运行时系统交互:通过Objective-C源码;通过在基础框架的NSObject类中定义的方法;通过直接调用运行时函数


Objective-C 源码


在大多数情况下,运行时系统在后台自动工作。您只需编写和编译Objective-C源代码就可以使用它。


当您编译包含Objective-C类和方法的代码时,编译器将创建实现语言动态特性的数据结构和函数调用。数据结构捕获类和类别定义以及协议声明中的信息;它们包括在用 _Objective-C _编程语言定义类协议时讨论的类和协议对象,以及方法选择器、实例变量模板和从源代码中提取的其他信息。主运行时函数是发送消息的函数,如 消息传递中所述。它由源代码消息表达式调用。


NSObject 方法


Cocoa中的大多数对象都是NSObject类的子类,因此大多数对象都继承它定义的方法。(一个值得注意的例外是NSProxy类;有关更多信息,请参阅 消息转发。)因此,它的方法建立了每个实例和每个类对象固有的行为。然而,在一些情况下,NSObject类只定义了一个模板,用于说明应该如何完成某件事;它本身并没有提供所有必需的代码。


例如,NSObject类定义了一个description实例方法,该方法返回一个描述类内容的字符串。这主要用于调试-GDB print object命令打印从该方法返回的字符串。这个方法的NSObject实现不知道类包含什么,所以它返回一个带有对象名称和地址的字符串。NSObject的子类可以实现此方法以返回更多详细信息。例如,基础类NSArray返回它包含的对象的描述列表。


有些NSObject方法只是查询运行时系统的信息。这些方法允许对象执行自省。此类方法的示例有类方法,它要求对象标识其类;isKindOfClass:和isMemberOfClass:,用于测试对象在继承层次结构中的位置;respondsToSelector:,指示对象是否可以接受特定消息;conformsToProtocol:,它指示对象是否声明实现特定协议中定义的方法;methodForSelector:,它提供方法实现的地址。像这样的方法给对象提供了自我反省的能力。


运行时函数


运行时系统是一个动态共享库,其公共接口由位于目录/usr/include/objc中的头文件中的一组函数和数据结构组成。这些函数中的许多都允许您使用纯C来复制编写Objective-C代码时编译器所做的工作。其他的则是通过NSObject类的方法导出的功能的基础。这些函数使得开发运行时系统的其他接口和生成扩展开发环境的工具成为可能;在Objective-C中编程时不需要它们。但是,在编写Objective-C程序时,一些运行时函数可能会有用。所有这些函数都记录在_Objective-C _运行时参考中。


相关文章
|
6月前
|
Serverless 语音技术 开发工具
函数计算操作报错合集之怎么何集成nls tts python sdk
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
7月前
|
Python
Python调用谷歌翻译接口
Python调用谷歌翻译接口
|
8月前
|
JavaScript Java 测试技术
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
48 0
|
8月前
|
Java
与JShell一起舞动代码的魔法:Java9交互式编程体验
与JShell一起舞动代码的魔法:Java9交互式编程体验
63 0
|
缓存 编译器 iOS开发
[OC Runtime编程指南_翻译]四、消息传递
本章介绍如何将消息表达式转换为objc_msgSend函数调用,以及如何按名称引用方法。然后解释如何利用objc_msgSend,以及如果需要,如何绕过动态绑定。
129 0
[OC Runtime编程指南_翻译]四、消息传递
|
算法 iOS开发
[OC Runtime编程指南_翻译]六、消息转发
[OC Runtime编程指南_翻译]六、消息转发
163 0
[OC Runtime编程指南_翻译]六、消息转发
|
编译器 iOS开发
[OC Runtime编程指南_翻译]七、类型编码
[OC Runtime编程指南_翻译]七、类型编码
119 0
[OC Runtime编程指南_翻译]七、类型编码
|
存储 API C语言
OC底层知识(九) : Runtime(上)
OC底层知识(九) : Runtime
163 0
OC底层知识(九) : Runtime(上)
|
API
OC底层知识(九) : Runtime(下)
OC底层知识(九) : Runtime(下)
108 0
OC底层知识(九) : Runtime(下)
|
编译器 iOS开发
[OC Runtime编程指南_翻译]八、声明属性
[OC Runtime编程指南_翻译]八、声明属性
184 0
[OC Runtime编程指南_翻译]八、声明属性