首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

objc_msgSend()是使Objective-C面向对象的重要部分吗?

objc_msgSend() 并不是使 Objective-C 面向对象的重要部分。

实际上,objc_msgSend() 是一个函数,用于在 Objective-C 语言中发送消息。该函数在 Objective-C 运行时环境中被调用,以执行特定对象的方法。

Objective-C 是 C 语言的一个扩展,引入了面向对象编程 (OOP) 的概念。虽然 objc_msgSend() 并不是创建面向对象代码的必要部分,但它是 Objective-C 语言的核心特性之一,并且是执行和操作对象模型的主要方式。

在开发过程中,您可能会使用 objc_msgSend() 来调用对象的方法,比如使用 [[MyClass instance] method] 的方式。当然,这仅仅是一个例子,您可以在实际应用中根据需求使用不同的方法调用方式。

总之,objc_msgSend() 并不是使 Objective-C 面向对象的重要部分,但它确实是 Objective-C 中执行对象方法调用不可或缺的部分。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【翻译】Golang语言-面向对象语言

第一个面向对象语言-simula问世于19世纪60年代。...由于面向对象没有标准定义,为了讨论方便,接下来我们将提供一个标准定义。 面向对象系统将数据和代码通过“对象”集成到一起,而不是将程序看成由分离数据和代码组成。...对象是数据类型抽象,它有状态(数据)和行为(代码) 面向对象包括继承、多态、虚派生等特性,接下来我们将看看go语言怎样处理对象、多态、继承,相信读完接下来介绍,您会对go如何处理面向对象有自己见解...上述简单例子并没有完成展示面向对象所有特性,比如继承和多态。需要说明go不仅可以在struct上定义方法,在任何命名类型上同样也可以。...go,一个没有object和inheritance面向对象语言 如上所述,面向对象基本概念在go中被很好实现了,虽然术语上存在差别。go把struct作为数据和逻辑结合。

1.8K80

Java一种纯面向对象语言

在刚开始学习 Java 前面几年,我从书本里知道了 Java 遵循 “面向对象编程范式(Object Oriented Programming paradigm)”。...在Java世界内一切都是对象,甚至包括字符串(String)这些都是对象(在 C 语言中,字符串字符数组),那时候,我认为 Java一种面向对象语言。...但是在后来,我在互联网站上陆续看到不少开发者说 “Java实际上不是纯粹面向对象,因为并不是所有的东西在 Java 世界都是一个对象”。...在那时,由于个人知识经验储备有限,我又很容地相信上面的论点,并且也开始认为 “Java 不是纯粹面向对象编程语言”。...到了更后来,在我一次JVM学习过程中,我有了新发现: JVM 在创建对象时候,实际上会创建两个对象: 一个实例对象。 另一个Class 对象

98000

Golang 语言面向对象编程风格编程语言

01 介绍 Golang 语言面向对象语言?Golang 语言官方回答 Yes and no。什么意思呢?Golang 语言面向对象语言,Golang 语言也不是面向对象语言。...虽然 Golang 语言有类(struct)和方法(method),支持面向对象编程风格,我们可以使用 Golang 语言 struct 实现面向对象封装特性,但是 Golang 语言没有面向对象继承特性...封装,继承和多态区分编程语言是否面向对象编程语言三个重要特性。本文我们通过一些简单易懂示例代码介绍一下 Golang 语言面向对象编程风格。...02 封装 面向对象封装特性,其他面向对象语言使用 class 定义一个类,然后在类中定义属性和方法。...05 总结 本文我们介绍了 Golang 语言是否面向对象编程风格语言,并给出了 Golang 语言官方回答和解释。然后使用示例代码介绍了 Golang 语言面向对象编程风格。

7.1K10

面向对象面向过程区别理解_c面向对象还是面向过程

大家好,又见面了,我你们朋友全栈君。 一、面向对象面向过程 面向对象 面向过程编程一种以过程为中心编程思想,分析出解决问题步骤,然后用函数把这些步骤一步一步实现。...面向对象编程,数据和对数据操作绑定在一起,数据可以存储在对象面向对象特点:封装、继承、多态 为了尽可能做到代码复用,使用封装隐藏实现细节,使得代码模块化,使用继承可以扩展已存在类...如果面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能调用顺序都没有变化,改动只是局部。...但是如果你当初就是面向对象设计,那么你只用改动规则对象就可以了,五子棋和围棋区别不就是规则?而下棋大致步骤从面向对象角度来看没有任何变化。...三、总结一下 面向过程就是把问题拆分为多个步骤,按步骤实现程序功能,而面向对象就是把问题解决步骤描述为对象行为; 面向过程数据被所有函数共享面向对象数据可以是私有的,只被对象函数使用 发布者

67210

java面向对象还是面向过程_Java面向对象编程和面向过程编程区别

大家好,又见面了,我你们朋友全栈君。 Java面向对象编程和面向过程编程区别 本章节目标: 了解面向对象,知道类和对象区别,会进行类定义。...知识框架: Java面向对象编程和面向过程编程区别 “面向过程”(Procedure Oriented)一种以过程为中心编程思想,简称OP。...面向过程其实是最为实际一种思考方式,就算是面向对象方法也是含有面向过程思想。可以说面向过程一种基础方法。它考虑实际地实现。一般面向过程从上往下步步求精。...有人这么形容OP和OO不同:用面向过程方法写出来程序一份蛋炒饭,而用面向对象写出来程序一份盖浇饭。...对于编程语言来说,基于C语言编程面向过程,C++只能说一半面向过程一半面向对象,java语言就是一门完全面向对象编程语言。

91630

什么面向对象以及和面向过程区别

概念 面向对象是一种编程范式,它将现实世界中事物抽象为对象,并通过对象之间交互来实现程序设计和开发。在面向对象编程中,对象是程序基本单元,具有状态(属性)和行为(方法)。...通过封装、继承和多态等概念,面向对象编程提供了一种结构化方法来组织和管理代码。...举例 现在我们来举一个将大象放进冰箱例子来说明面向对象概念: 在面向对象世界里,我们可以将大象和冰箱都抽象为对象,并定义它们属性和方法。...在大象对象方法中,我们可以检查冰箱对象状态,比如是否打开,是否有足够空间来容纳大象。如果冰箱打开并且有足够空间,大象对象就可以进入冰箱。...和面向过程区别 面向过程一种编程范式,它将程序设计看作一系列按照特定顺序执行步骤或函数调用。在面向过程编程中,程序重点算法和数据处理,而不是对象之间交互。

31240

Runtime 中消息机制

说道Objective-C里面的消息机制,大部分人都知道调用方法其实就是发送消息,一个叫objc_msgSend东西负责。...为什么Objective-C里会有消息机制 这就是语言基因问题了Smalltalk,之前在一本叫《代码未来》了解到Smalltalk一门比较古老语言,在 Smalltalk 中一切皆对象,一切调用都是发消息...Objective-C在C基础上,借鉴 Smalltalk 面向对象与消息机制扩展出来语言,就像Golang语言天生自带并发基因。...发送消息过程 在Objective-C中,如果向某个对象传递消息,那就会在运行时使用动态绑定(dynamic binding)机制来决定需要调用方法。...说过了OC函数调用实现,你会觉得消息转发要处理很多,尤其在搜索上,幸运objc_msgSend在搜索这块有做缓存,每个OC类都有一块这样缓存,objc_msgSend会将匹配结果缓存在快速映射表

1K50

什么面向对象? Java 灵魂概念

类和对象 1.1 什么面向过程?什么又是面向对象?...、功能划分,将这些存在共性部分封装成类(类实例化后才是对象),创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题步骤中行为 1.1.1 能举个例子谈谈你对面向过程和面向对象理解 例如我们设计一个桌球游戏...) 1.1.2 面向过程和面向对象优缺点 A:面向过程 优点:性能上它是优于面向对象,因为类在调用时候需要实例化,开销过大。...,使系统更加灵活、更加易于维护 缺点:一般来说性能比面向过程低 低耦合:简单理解就是说,模块与模块之间尽可能独立,两者之间关系尽可能简单,尽量使其独立完成成一些子功能,这避免了牵一发而动全身问题...总结:只通过教科书后例题无法体会到面向过程所存在问题,在一些小例程中,面向过程感觉反而会更加简单,但是一旦面临较大项目,我们需要编写N个功能相似的函数,函数越来越多,代码量越来越多,你就知道这是一场噩梦了

47620

谈谈你怎么理解面向对象

一道经典面试题,当面试官问你,你怎么理解面向对象即OOP,你应该怎么回答呢? 答:面向对象三个特征:封装,继承,多态。...面向对象  1、什么类? 具有相同属性(特征)和方法(行为)一系列个体集合,类一个抽象概念。 2、什么对象? 从类中,拿到具有具体属性值个体,称为对象对象是一个具体个体。...比如人类;张三 3、类和对象关系? 类对象抽象化!对象是类具体化! 类仅仅表明这类对象有哪些属性,但是不能有具体值,所以类抽象。...4、instanceof操作符: 检测一个对象,是否某一个类实例。...常用方法小结 1、当使用=讲一个对象,赋值给另一个对象时,赋实际对象地址。 两个对象指向同一地址,所以一个对象改变,另一个也会变化。

69710

Java中数组对象

转载此篇文章感觉这篇文章对其结论分析过程很棒。 正文 Java中数组对象? Java和C++都是面向对象语言。...在使用这些语言时候,我们可以直接使用标准类库,也可以使用组合和继承等面向对象特性构建自己类,并且根据自己构建类创建对象。...那么,我们是不是应该考虑这样一个问题:在面向对象语言中,数组对象? 要判断数组是不是对象,那么首先明确什么对象,也就是对象定义。...2)name在对象中只表示一个引用, 也就是一个地址值,它指向一个真实存在字符串对象。在这里严格区分了引用和对象。 那么在Java中,数组满足以上条件?...既然对象, 那么就必须属于一个类型,比如根据Person类创建一个对象,这个对象类型就是Person。那么数组类型是什么呢?

7.2K11

JavaScript对象属性有序

最近有人问我,JavaScript对象属性是否一定是无序、不可预测?...早期接触过JavaScript开发者可能会回答,Object.keys()或for...in会返回一个不可预知对象属性顺序。 但现在情况仍然这样? 不是了,有些情况下有序。...自己属性数组索引,按数字索引升序排列 const obj = { 100: 100, '2': 2, 12: 12, '0': 0 } // 下面打印结果顺序都是 ['0', '...因为 setTimeout 一个异步宏任务,当console.log输出时,c属性还没有被添加到 obj 中。 3....总结 当一个对象属性键上述类型组合时,该对象非负整数键(可枚举和不可枚举)首先按升序添加到数组中,然后按插入顺序添加字符串键。最后,Symbol 键按插入顺序加入。

1.4K30

哪些代码设计看似是面向对象,实际面向过程

哪些代码设计看似是面向对象,实际面向过程? 在用面向对象编程语言进行软件开发时候,我们有时候会写出面向过程风格代码。有些有意为之,并无不妥;而有些无意为之,会影响到代码质量。...下面我就通过三个典型代码案例,给你展示一下,什么样代码看似是面向对象风格,实际上面向过程风格。...但如果你用类似 Java 这样面向对象编程语言来做开发,全局变量和全局方法就不是很多见了。 在面向对象编程中,常见全局变量有单例类对象、静态成员变量、常量等,常见全局方法有静态方法。...前面我们讲了面向对象编程相比面向过程编程各种优势,又讲了哪些代码看起来像面向对象风格,而实际上面向过程编程风格。那是不是面向过程编程风格就过时了被淘汰了呢?...实际上,面向过程编程面向对象编程基础,面向对象编程离不开基础面向过程编程。为什么这么说?我们仔细想想,类中每个方法实现逻辑,不就是面向过程风格代码

74661

哪些代码设计看似是面向对象,实际面向过程

滥用 getter、setter 方法 违反了封装特性,风格退化为面向过程编程 2....滥用全局变量、全局方法 Constants 类 所有的常量都放在这个类中,不好: 影响代码可维护性(类越来越大,查找费时) 增加代码编译时间(依赖这个代码文件很多,每次修改,依赖文件都要重新编译...) 影响代码复用性(可能将一些无关常量引入到新项目) 改进: 拆解,跟哪个模块相关参数放在一起 哪个类用到常量,在其中定义 Utils 类 不同类都共同使用方法,可以定义到 Utils 类中,它是面向过程风格...数据、方法分离 数据定义在一个类,方法定义在另一个类,彻底面向过程风格

26920

面向对象是面试时提问最多

帮您整理了一些面试过程中常常被问到面向对象题目,帮你在面试时快速胜出。 1、什么面向对象?...(理解回答) 面向对象是一种思想,基于面向过程而言,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体细节。 面向对象有三大特征:封装性、继承性、多态性。...现在纯正面向对象语言主要是 Java 和 C#,PHP、C++ 也支持支持面向对象,C 面向过程。 2、简述 private、 protected、 public 修饰符访问权限。...5、面向对象特征有哪些方面? 主要有封装,继承,多态。如果 4 个方面则加上:抽象。...继承:在定义和实现一个类时候,可以在一个已经存在基础之上来进行,把这个已经存在类所定义内容作为自己内容,并可以加入若干新内容,或修改原来方法使之更适合特殊需要,这就是继承。

47920

怎样教媳妇面向对象编程

下面我们谈话步骤:话题:介绍面向对象设计 丈夫:亲爱,让我们开始学习面向对象设计。你了解面向对象规范,对? 妻子:你指封装,继承和多态?是的,我了解这些规范。...丈夫:行,我想你已经知道怎么用类和对象了。今天我们来学习面向对象设计。 妻子:等等。了解面向对象规范对面向对象编程来说难道不够?我意思,我能够定义类,封装属性和方法。...这么个,计算几何应用使 Rectangle 类,图形应用使 RectangleUI 类。咱还可以把这俩类分到俩单独 DLL 中,然后改时候就不用管另一个了。...妻子: 我理解, 抽象是关键, 对?...我认为这个面向对象编程基本原则. 这个叫做多态性, 对吧? 为什么面向对象设计原则需要考虑这个问题? 丈夫: 非常好问题.

77980

C++面向对象程序设计_面向对象程序设计基本机制

大家好,又见面了,我你们朋友全栈君。 文章目录 一、面向过程和面向对象区别。 二、面向过程和面向对象特征。 三、面向对象基本特征:封装性,继承性,多态性(抽象性)。...面向对象是把构成问题事务分解成各个对象,建立对象目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题步骤中行为 二、面向过程和面向对象特征。...面向过程把过程作为编程思路,如程序流程图,但是面向对象是把实体当作对象,如自行车一个实体,就是一个对象,它有自己属性,但是它可以派生除别的类,如变速自行车,除了有自行车特点外,还有变速这个特点...,其实面向对象就是把显示中一个事务当作一类东西,这类东西具有某些特性,但是它可以派生,就形成具有某个特点对象,就是派生类 三、面向对象基本特征:封装性,继承性,多态性(抽象性)。...这种关系使某一类可以继 承另外一个类特征和能力(数据和操作)。

30910

Objective-C Runtime编程指南(1)

三、消息 objc_msgSend功能 在Objective-C中,消息在运行时才被绑定到方法实现。...连续失败使得objc_msgSend一直向上层结构查找,直到它到达NSObject类。一旦找到selector,objc_msgSend函数将调用在表中输入方法,并将接收对象数据结构传递给方法。...这是在运行时选择方法实现方式 - 或者在面向对象编程术语中,方法动态绑定到消息。 为了加速消息处理,运行时系统缓存方法selector和地址。...一种方法使类继承另一个类方法。但是,这样安排事情可能不可能。可能有很好理由,为什么你类和实现negotiate在继承层次结构不同分支。...同时,为了使应用程序中其他对象正常工作,至少需要该对象占位符。 在这种情况下,你最初可以创建,而不是完整对象,而是一个轻量级替代品。

76320

iOS RunTime之三:消息发送

由上面一章中,我们了解了什么RunTime数据结构,下面了解一下Runtime消息发送。...我们知道[object doSomething]被编译器转化为: id objc_msgSend ( id self, SEL op, ... ); 在Objective-C中,消息直到运行时才会绑定到方法实现上...消息发送其实就是先确定object接受者对象,然后根据isa指针查找其方法然后跳转过去并执行。 但是编译期间,无法确定object接受者对象。...消息发送这种工作机制明显区别另一著名面向对象编程语言——C++或者Java。C++或者Java调用对象函数,函数与对象之间关系,在编译期间就必须严格确定。...消息发送设计使得编译期间Objective-C非常包容对象所属类。在Objective-C语言中你可以向任何包括空指针nil在内对象发你想发消息。

50730

本质-类对象

存储.png 5.OC实例对象、类对象、元数据、之间关系 Objective-C一门面向对象编程语言。 每一个对象 都是一个类实例。...在实际编程中,我们几乎不会遇到向元类发消息情况,那它isa 指针在实际上很少用到。不过这么设计保证了面向对象干净,即所有事物都是对象,都有isa指针。...如果找不到,objc_msgSend 将继续从父类中寻找,直到NSObject 类。一旦找到了方法选标, objc_msgSend 则以消息接收者对象为参数调用,调用该选标对应方法实现。...若是如此,那就应该使用==操作符,而不要使用比较Objective-C对象使常用“isEqual:”方法。因为==操作符比较指针是否相等,也就是比较内存地址是否相同。...而"isEqual:"比较两个Objective-C对象值是否相等。

9.3K50
领券