`
nswish
  • 浏览: 104670 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对Objective-C元编程的理解

阅读更多

Objective-C在元编程方面的能力相当强,有那么一点Ruby的风范。

1. 分类(Category)概念,与Ruby中的模块类似,但更简单和纯粹一些。

2. 类方法只能被类调用,实例方法只能被实例调用,这点与Ruby一致。

3. NSObject是一种根类(root class),不仅指它是绝多数类的祖先类,而且还是“元类”(metaclass 在Objc中,貌似无法直接触及到)的祖先类。因此,凡是NSObject的实例方法,也是其自身和子类的类方法,相当的抽象。

例如:respondsToSelect:方法定义为NSObject的一个实例方法。它既可以作为类方法被NSObject和其子类调用,也可以作为实例方法被NSObject和其子类的实例调用。唯一的区别是,作为类方法调用时,该方法告知对应的类和其父类是否具有指定的类方法,而作为实例方法调用时,告知它们是否具有指定的实例方法。

4. “元类”的含义是什么?简单的讲,就是保存有对象实例方法信息的类。普通的类就是其实例的“元类”。那类的“元类”是什么呢?在Objc中,我认为它是个概念,无法实际触及。普通类中定义的类方法,可以视为在其“元类”中的实例方法。也就是说,在类中定义的+方法,实际上就是对应“元类”中的-方法。只是因为“元类”无法触及,所以只能作为+方法在类中定义了。当调用类的类方法时,运行时(Runtime)会到其对应的“元类”中找-方法,就如同调用实例的方法时,到类中找-方法那样。

5. 当对象接收到一个消息且这个对象无对应处理方法时,运行时会调用methodSignatureForSelector:方法获取对应方法的信息。如果methodSignatureForSelector:方法返回为空,则直接异常。如果返回非空,则运行时进一步调用forwardInvocation:方法。

分享到:
评论

相关推荐

    Objective-C编程之道-高清

    Objective-C编程之道:iOS设计模式解析是基于iOS 的软件开发指南。书中应用GoF 的经典设计模式,介绍了如何在代码中应用创建型模式、结构型模式和行为模式,如何设计模式以巩固应用程序,并通过设计模式实例介绍MVC ...

    Effective Objective-C 2.0

    从语法、接口与api设计、内存管理、框架等7大方面总结和探讨了objective-c编程中52个鲜为人知和容易被忽视的特性与陷阱。书中包含大量实用范例代码,为编写易于理解、便于维护、易于扩展和高效的objective-c应用提供...

    iPhone 开发入门 从 C/C++ 语言到 Objective-C 语言

    Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。所以有一定C/C++语言基础理解和掌握Objective-C也会相应的快些。这回,我们将比较着学习 Objective-C语言,掌握其语法并理解其...

    是一本实用的 Objective-C 编程指南

    : 这本书由 Big Nerd Ranch 公司的创始人之一 Aaron Hillegass 和 Mikey Ward 合著,是一本实用的 Objective...它以项目为导向,通过实际项目案例和练习,帮助读者深入理解 Objective-C 编程语言的核心概念和实践技巧。

    Objective-C 2.0运行时系统编程指南

    本文着眼于NSObject类以及Objective-C程序的运行时系统交互。...你应该阅读这个文件来获得的Objective-C运行系统是如何工作的理解以及如何利用它。通常情况下,你写一个Cocoa 应用程序很少需要知道和理解这些。

    破解Objective-C面试:笑到最后的技术攻略!.zip

    Objective-C、iOS开发、Mac OS X、编程语言、面向对象编程、内存管理、自动引用计数(ARC)、协议(protocol)、类扩展(category)、键值观察(KVO)、键值编码(KVC)、Block、Delegate模式、多态性、Singleton...

    Object-C语言教程&

    Objective-C 入门教程 分类 编程技术 Objective-C 是一种简单的计算机语言,设计为可以支持真正的面向对象编程。 Objective-C 通过提供类定义,方法以及属性的语法,还有其他可以...Objective-Objective-C是C语言的

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码《Objective-C编程之道:iOS设计模式解析》是基于iOS的软件开发指南。书中应用GoF的经典设计模式,介绍了如何在代码中应用创建型模式、结构型模式和行为模式,...

    Using Swift with Cocoa and Objective-C完整中文CocoaChina精校版

    与 C 语言交互编程 语言交互编程 语言交互编程 语言交互编程 30 基本数据类型 基本数据类型 基本数据类型 . 30 枚举 . 31 指针 . 32 全局常量 全局常量 . 37 预处理指令 预处理指令 . 37 3.Mix and Match3.Mix and ...

    Objective-C程序设计第4版中英文版本(part1/2)

    Objective-C 程序设计(第4版)(全球最畅销Objective-C编程书籍) 共两部分,这是第一部分,全部下载后,使用WinRAR解压 包含文件: Objective-C程序设计第4版.pdf 中文高清扫描版 定价:¥89.00 Programming in ...

    Objective-C程序设计第4版中英文版本(part2/2)

    Objective-C 程序设计(第4版)(全球最畅销Objective-C编程书籍) 共两部分,这是第二部分,全部下载后,使用WinRAR解压 包含文件: Objective-C程序设计第4版.pdf 中文高清扫描版 定价:¥89.00 Programming in ...

    Objective-C对象模型及应用

    希望本文能加深你对Objective-C对象的理解。Objective-C是一门面向对象的编程语言。每一个对象都是一个类的实例。在Objective-C语言的内部,每一个对象都有一个名为isa的指针,指向该对象的类。每一个类描述了一系列...

    基于Object-C语言实现列表选择(项目源码).rar

    Object-C语言基础: 学习Object-C语言的基本语法和特性,了解Objective-C编程范式和iOS开发规范。 列表选择功能实现: 掌握实现iOS应用中列表选择功能的方法和技巧,包括列表的展示、数据的加载和选择状态的管理等...

    Object-C 入门教程-object-c如何学习

    Objective-C 是一种简单的计算机语言,设计为可以支持真正的面向对象编程。 Objective-C 通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的 ANSI C 语言。类的语法和...

    Objective-Cruntime

    作为一门动态编程语言,Objective-C会尽可能的将编译和链接时要做的事情推迟到运行时。只要有可能,Objective-C总是使用动态的方式来解决问题。这意味着Objective-C语言不仅需要一个编译环境,同时也需要一个运行时...

    核心动画编程指南

    阅读此文档的前 提是你已经掌握了Objective-C语言的基础,因为核心动画内部广泛的使用了 Objective-C的相关属性。你还应该熟悉键-值编程方法(参考文档 Key-Value Coding Programming Guide)。同时如果你对Quartz2D...

    核心动画高级技巧

    阅读此文档的前 提是你已经掌握了Objective-C语言的基础,因为核心动画内部广泛的使用了 Objective-C的相关属性。你还应该熟悉键-值编程方法(参考文档 Key-Value Coding Programming Guide)。同时如果你对Quartz2D...

Global site tag (gtag.js) - Google Analytics