Cocoa基本原理指南之六 - 内省
来源:互联网 发布:iphone在线软件安卓版 编辑:程序博客网 时间:2024/05/20 11:32
摘自:http://www.apple.com.cn/developer/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/chapter_1_section_1.html
内省是对象揭示自己作为一个运行时对象的详细信息的一种能力。这些详细信息包括对象在继承树上的位置,对象是否遵循特定的协议,以及是否可以响应特定的消息。NSObject协议和类定义了很多内省方法,用于查询运行时信息,以便根据对象的特征进行识别。
明智地使用内省可以使面向对象的程序更加高效和强壮。它有助于避免错误地进行消息派发、错误地假设对象相等、以及类似的问题。
NSObject协议声明了几个方法,用于确定对象在类层次中的位置。这些方法在不同粒度上进行操作,比如class和superclass实例方法分别返回代表类和超类的Class对象。使用这些方法需要将一个Class对象和另一个进行对比。
NSObject还有两个功能更加强大的内省方法,即respondsToSelector:和conformsToProtocol:。这两个方法分别告诉您一个对象是否实现特定的方法,以及是否遵循指定的正式协议(即该对象是否采纳了该协议,且实现了该协议的所有方法)。
hash和isEqual:方法虽然不是严格的内省方法,但是可以发挥类似的作用,是进行对象的识别和比较时不可或缺的运行时工具。它们并不向运行环境查询对象信息,而是依赖于具体类的比较逻辑。hash和isEqual:方法都在NSObject协议中声明,且彼此关系紧密。实现hash方法必须返回一个整型数,作为哈希表结构中的表地址。两个对象相等(isEqual:方法的判断结果)意味着它们有相同的哈希值。如果您的对象可能被包含在象NSSet这样的集合中,则需要定义hash方法,并确保该方法在两个对象相等的时候返回相同的哈希值。NSObject类中缺省的isEqual:实现只是简单地检查指针是否相等。isEqual:的使用相当直接,它将消息的接收者和通过参数传入的对象进行比较。对象的比较常常可以在运行时决定应该对对象做些什么。如果正在创建子类,则可能需要重载isEqual:方法,以进一步检查对象是否相等。子类可能定义额外的属性,当两个实例被认为相等时,属性的值必须相同。
- Cocoa基本原理指南之六 - 内省
- Cocoa基本原理指南之二 - Cocoa对象
- Cocoa基本原理指南之三 - 根类
- Cocoa基本原理指南之七 - 类簇
- Cocoa基本原理指南之四 - Cocoa对象的生命周期
- Cocoa基本原理指南之九 - 为Cocoa添加行为
- Cocoa基本原理指南之十 - 使用Cocoa框架
- Cocoa基本原理指南之十一 - Cocoa设计模式
- Cocoa基本原理指南 中文版
- Cocoa基本原理指南之五 - 对象的创建
- Cocoa基本原理指南之八 - 创建一个单件实例
- Cocoa基本原理指南之一 - Cocoa框架
- Cocoa基本原理指南之一 - Cocoa框架
- 文档学习:Cocoa 基本原理指南
- linux指南之六
- 类簇---Cocoa 基础指南
- cocoa编码指南(翻译)
- Cocoa编程指南
- eWebEditor在IE8下无法使用的解决方法
- VC_调试
- 客户端连接Linux操作系统上的DB2数据库
- fast DFS 单机使用实例
- C#资源管理器
- Cocoa基本原理指南之六 - 内省
- believe yourself
- Ext gridPanel 打印
- 捐款在中国就这么难?谁对谁错?君子、小人、嫉妒、大度、诚信、欺骗?
- 【常用代码】文件下载(http方式)
- CreateWindow
- springside使用——关于Struts2的一些配置
- 调用windowsAPI获得系统图标
- Centos底部面板图标不见的解决办法