`
nswish
  • 浏览: 108145 次
  • 性别: 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高级编程 iOS与OS X多线程和内存管理_Objective-C_ios_

    总的来说,《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入实践的指南,它将帮助开发者掌握Objective-C在实际开发中的高级技巧,提升应用的性能和稳定性,对于想要深入理解Apple平台开发的程序员来说...

    Objective-C编程全解最新版.pdf.zip

    1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...

    Objective-C高级编程†

    本资料"Objective-C高级编程"旨在帮助已经入门的iOS开发者深化对Objective-C的理解,提升其编程技能。 在Objective-C中,类是所有对象的蓝图,它们定义了对象的属性和行为。了解类的声明、实例化以及消息传递机制是...

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

    ### Objective-C 2.0 运行时系统编程指南 #### 概述 Objective-C是一种面向对象的编程语言,它以其独特的动态性而闻名。这种动态性体现在它能够尽可能地将决策过程推迟到运行时执行,而不是在编译或链接阶段。因此...

    Objective-C高级编程 iOS与OS X多线程和内存管理

    《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入探讨Objective-C在iOS和OS X平台上的核心特性的书籍。本书重点聚焦于多线程和内存管理两个关键领域,对于iOS和macOS应用开发人员来说,这是理解和优化...

    objective-c编程 第2版=objective-c program 2nd edition_13889311

    通过阅读"Objective-C编程 第2版",无论是初学者还是有经验的开发者,都能从中受益,提升对Objective-C的理解和应用能力。书中的详细讲解和实例将帮助读者更好地融入Apple的开发生态系统,为构建高质量的iOS和macOS...

    Objective-C 编程语言.pdf

    2. **系统级编程**:由于Objective-C与C语言的兼容性,它也被用于开发一些对性能有较高要求的系统级应用或库。 3. **跨平台开发**:虽然Objective-C主要用于苹果平台的开发,但也有第三方工具如Cocoa Touch用于在...

    禅与Objective-C编程艺术

    《禅与Objective-C编程...总结来说,《禅与Objective-C编程艺术》不仅是一本技术指导书籍,更是一本引领程序员深入理解编程艺术,提升编程境界的智慧之作。对于iOS开发者来说,这本书是一本值得精读和收藏的必备图书。

    Objective-C 2.0编程语言(Apple Inc.)The Objective-C 2.0 Programming Language (Apple Inc.)

    但即便如此,我们依旧可以根据上述信息,理解Objective-C编程语言的基础知识、苹果公司对文档的使用规定、版权声明以及商标使用准则。这对于进行苹果平台应用程序开发的程序员而言,是不可或缺的重要参考信息。

    Objective-C编程之道

    本资源"Objective-C编程之道"是一本关于掌握Objective-C编程的高清电子书,旨在帮助开发者深入理解和熟练运用这门语言。 首先,Objective-C的基础知识包括类和对象的概念。类是对象的蓝图,定义了一组特性和行为,...

    Objective-C2.0程序设计第二版中文版及代码

    《Objective-C 2.0程序设计》和《Effective Objective-C 2.0》两本书将深入讲解以上知识点,并提供实践示例,帮助读者更好地理解和应用Objective-C 2.0。通过学习这些内容,开发者能够熟练地构建高效、稳定、用户...

    Swift和Objective-C混合编程示例代码

    在iOS应用开发中,Swift和Objective-C的混合编程是一个常见的需求。Swift是Apple于2014年推出的现代化编程语言,而Objective-C则是苹果长期使用的系统级编程语言,两者各有优势。本示例代码旨在帮助开发者理解如何在...

    Objective-c语言学习-快速入门完整版完整版

    Objective-C是一种强大的面向对象编程语言,它是苹果生态系统中开发iOS和macOS应用程序的主要语言。本教程将通过一系列的PPT课件,引导你快速入门Objective-C,这些课件覆盖了从基础到高级的重要概念,是《iPhone与...

    objective-c运行时编程指南

    ### Objective-C运行时编程指南 #### 导言 Objective-C是一种强大的面向对象编程语言,它在编译和链接阶段保留了大量的灵活性,将其推迟至运行时处理。这种特性使得Objective-C能够在运行时动态地加载类、解析方法...

    C语言主要知识点巩固(学习Objective-C 的前提)

    在掌握了这些C语言基础知识后,你将更好地理解和学习Objective-C,因为Objective-C是在C语言的基础上扩展的面向对象编程语言,它保留了C的大部分语法,并引入了类、消息传递等面向对象特性。因此,牢固的C语言基础...

    Effective Objective-C 2.0&Obj;-C高级编程

    "Effective Objective-C 2.0&Obj-C高级编程"这个压缩包文件包含了关于这个语言的深入学习资料,旨在帮助开发者提升他们的编程技能和理解。下面我们将详细探讨其中涉及的一些关键知识点。 1. **内存管理**: - ...

    Objective-C与Objective-C++的混用代码示例

    Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...

    Objective-C编程全解第三版

    Objective-C编程全解第三版 知识点: 1. Objective-C简介:...这本书适合iOS初学者阅读学习,因此会在上述知识点的阐述中,使用大量的实例和练习来帮助读者理解和掌握Objective-C编程语言和iOS应用开发的相关技能。

    禅与 Objective-C 编程艺术

    《禅与 Objective-C 编程艺术》是一本深入探讨Objective-C编程哲学和技术的书籍,旨在帮助开发者提升代码质量,写出更具艺术性的程序。Objective-C,作为苹果生态系统的主要编程语言,是开发iOS和macOS应用程序的...

    禅与 Objective-C 编程艺术 .zip

    本书以禅的思考方式为引导,旨在帮助开发者深化对Objective-C的理解,提升编程技艺。 Objective-C是C语言的一个扩展,它引入了Smalltalk式的面向对象特性,如消息传递和类别(Category)。在本书中,你将了解到: ...

Global site tag (gtag.js) - Google Analytics