`

Object-C的对象模型

 
阅读更多
在Object-C的类型结构中,有几个比较重要的概念Object(实例),Class(类),Metaclass(元类),Rootclass(根类),Rootclass‘s metaclass(根元类)。有面向对象编程语言背景的同学可以很容易理解类和实例。在Object-C中,Object本质上是一个struct,在这个struct中会保存一个名为isa的指针,该指针会指向该Object的类。如下:
typedef struct objc_object {
    Class isa;
} *id;

Object的类中保存了该Object实现的所有方法(即实例方法),另外还有类中还保存了父类的指针,这样Object的方法调用过程可以描述如下:

  • 1. 会根据isa找到类,
  • 2. 从类中寻找方法,
  • 3. 找到的话,直接执行。
  • 4. 没找到的话,继续沿着父类的指针往上找,直到找到为止。
  • 5. 最后都没找到,则报错。


在Object-C中,类同样是一个Object,类实例同样有自己的isa,这就是元类。元类中保存了所有的类方法和父元类的指针。现在我们知道,对象是类的实例,类是元类的实例,那么元类呢? 元类是根元类的实例,根元类呢? 根元类是自己的实例,循环到此收尾。这就是整个Object-C语言的寻类过程。

那么,继承关系呢?Object-C中类的继承和元类的继承是并行的,如果类之间继承了,那么他们的元类也就继承了,直到根元类,根元类的父类是根类。这就是整个Object-C的对象模型。


  • 大小: 199.1 KB
分享到:
评论

相关推荐

    用Object-C语言开发的一键Json转模型搭配开源库"MJExtension"使用

    Object-C语言是一种面向对象的程序设计语言,常用于iOS和macOS应用程序的开发。在iOS开发中,经常需要将JSON数据转换为模型对象,以便更方便地处理数据。为了简化这一过程,开发者可以使用开源库"MJExtension"来实现...

    Object-Oriented Programming with Object-C

    标题"Object-Oriented Programming with Objective-C"明确指出,本文档与Objective-C这门编程语言以及面向对象编程范式相关。Objective-C是苹果公司为其Mac操作系统开发的应用程序编程语言,后来成为iOS应用程序开发...

    Object-C语言教程0220.zip

    Object-C是一种基于C语言的面向对象编程语言,主要在苹果的iOS和macOS平台上使用。本教程0220.zip包含了一份关于Object-C语言的详细教学资料,旨在帮助初学者和有经验的开发者深入理解其核心概念和特性。 1. **类与...

    Object-C语言教程&案例&相关项目资源

    - **数据库(Core Data)**:苹果提供的持久化框架,用于存储和检索对象模型。 9. **项目实践** - **Hello, World**:初识Objective-C的简单程序,了解编译运行流程。 - **UI设计**:创建基本的用户界面,包括...

    Object-C期末复习_object-c_

    Objective-C(简称ObjC)是一种基于C语言的、面向对象的编程语言,主要用于苹果的iOS和macOS操作系统开发。在学习和准备Objective-C的期末复习时,我们需要掌握以下几个核心概念和知识点: 1. **类与对象**: - **...

    Object-C语言教程&案例&相关项目资源.zip

    - **类与对象**:Object-C中的所有事物都是对象,每个对象都属于一个类。类定义了对象的行为和属性,而对象则是类的实例。 - **协议(Protocols)**:类似于Java和C#的接口,协议定义了一组方法签名,但不提供实现...

    《Object-Oriented Programming with Object C》 英文高清原版 PDF

    《Object-Oriented Programming with Object C》是一本深入探讨面向对象编程(OOP)与Objective-C语言的专业书籍。Objective-C是Apple开发的一种强大的、面向对象的编程语言,主要用于iOS和macOS的应用程序开发。这...

    Object-C的语法与Cocoa框架

    Object-C的设计旨在提高代码的可读性和可维护性,同时保持C语言的效率和灵活性。Object-C主要应用于Apple的macOS和iOS操作系统上,是开发这些平台应用程序的主要语言之一。 **基本语法特点:** 1. **类定义**:在...

    Object-C/Swift官网文档

    1. **消息传递**:这是Object-C的核心特性,通过消息传递实现对象间的通信,如`[receiver method]`语法。 2. **类别(Category)**:类别允许开发者扩展已有的类,添加方法而无需继承。 3. **协议(Protocol)**:...

    基于IOS平台(object-c)的游戏五子棋程序设计

    1. **Objective-C语言基础**:Object-C是C语言的超集,它添加了面向对象的特性,如消息传递、类和协议等。在五子棋项目中,你需要理解类的定义、对象的创建、继承、多态以及消息传递机制。 2. **MVC设计模式**:在...

    Object-C的语法与Cocoa框架_V1.0_ios_base32u_

    Object-C是苹果公司为Mac OS X和iOS操作系统开发的应用程序编程语言,它是C语言的超集,融入了Smalltalk的面向对象特性。了解Object-C的基础语法和Cocoa框架对于开发苹果平台的应用至关重要。 **一、Object-C语法...

    基于matlab Object-C语言教程物理应用-代码说明.txt

    MATLAB是一种广泛应用于科学计算、算法开发和数据分析的强大工具,而Object-C则是一种面向对象的编程语言,主要用于iOS和macOS应用程序的开发。通过这两种语言的结合使用,可以更有效地实现物理现象的模拟与分析。 ...

    object-c学习教程PPT

    Objective-C(Object-C)是苹果公司开发的一种面向对象的编程语言,主要应用于iOS和Mac OS X操作系统。它是C语言的超集,包含了Smalltalk风格的消息传递机制,因此它具有C语言的底层控制能力和Smalltalk的灵活性。在...

    Object-C-使用object-c开发的iOS平台网络框架-network.zip

    Objective-C是C语言的超集,增加了面向对象的特性,如类、继承、多态等。在iOS中,Foundation框架提供了一系列的网络相关的类,如NSData、NSURL、NSURLConnection等,它们是进行网络操作的基本工具。例如,NSData...

    资源专区-课程设计-编程作业-Object-C资源-基于Object-C的健身俱乐部会员系统

    - **面向对象编程**:Object-C是C语言的超集,添加了面向对象的特性,如类、对象、继承、多态和消息传递。 - **Foundation框架**:在Objective-C中,Foundation框架提供了基本的数据类型、集合类、字符串处理等...

    Object-C的介绍及相关学习资源推荐

    1. **消息传递机制**:Objective-C采用了一种基于消息传递的模型,其中函数调用被视为向对象发送消息。 2. **动态类型**:在运行时可以确定对象的实际类型,这意味着开发者可以在运行时检查对象的属性和方法。 3. **...

    object-C &&iphone开发入门

    Object-C是Apple公司为Mac OS X和iOS操作系统开发的应用程序所采用的主要编程语言,它是C语言的一个扩展,加入了Smalltalk的类和消息传递机制,因此在学习Object-C时,会涉及C语言的基础以及面向对象编程的概念。...

    object-c教程

    - **对象模型**:Objective-C 基于C语言,但引入了面向对象的概念,如类、对象、继承、封装和多态。 - **动态类型**:Objective-C 在运行时确定对象类型,这使得消息传递更加灵活。 - **消息传递**:Objective-C ...

    Object-C教程

    Object-C是一种面向对象的编程语言,它是在C语言的基础上增加了面向对象的特性。Object-C最初由Stepstone公司于1980年代初开发,后来被苹果公司采用并进一步发展成为其主要的开发语言之一。在iOS和macOS的应用开发中...

    Object-oriented_Programming_with C

    1. 结构体和联合体的使用,以构建对象模型。 2. 函数指针的应用,实现方法调用。 3. 模板或宏的使用来创建类的抽象。 4. 内存管理和对象生命周期的管理。 5. 如何实现继承、多态性和抽象。 6. 面向对象设计模式在...

Global site tag (gtag.js) - Google Analytics