5 OC 中的三种对象

OC面向对象之方法 OC面向对象之方法 设计一个Caculator计算器类,它拥有计算的功能(行为) 1不带参数的方法 设计一个返回PI的方法 //方法声明 -(double)pi; //方法实现 -(double) pi {   return 3.1415926; } 方法声明   方法调用 2带一个参数的方法     设计一个计算平方的方法 //方法声明 - 阅读详情

目录

OC 中对象的分类

一  instance 对象

二 类对象

 

三  元类对象

总结:


OC 中对象的分类

 instance 对象

类对象

元类对象

一  instance 对象

内存中包含哪些信息

  1.  isa 指针
  2. 其他成员的变量

 

  Student *stu1 = [[Student alloc]init];

以上的stu1 就是实例对象

 

二 类对象

 以下就是类对象

  1.         Class cls1  = [stu1 class];
  2.         Class cls2  = object_getClass(stu1);
  3.         Class cls3 = [NSObject class];

 

一个类的类对象是唯一的,只有一份,类对象在内存中有什么用呢?

内存中包含的信息

  1. isa 指针
  2. superclass 指针
  3. 类的属性信息(@property),类的对象方法信息(instance method)
  4. 类的协议信息(protocol),类的成员变量信息(ivar)

 

三  元类对象

metaClass

Class metaCls = object_getClass([NSObject class]);

元类对象有什么用呢?

+ (void)test;

 像这种+开头的方法就是放到元类对象中的。

- (void)test;

这种方法是放到类对象中的。

 

元类对象和类对象内存结构是一致的吗,但是就是用途不一样,包含的信息不一样

 

  1. isa 指针
  2. superclass 指针
  3. 类的方法信息
  4. ......

 

使用runtime 判断是否是元类对象 class_isMetaClass

NSLog(@"%d",class_isMetaClass([NSObject class]));

 

 

总结:

 

无论是instance 对象 还是 class 对象 或者是 metaclass 对象,都有一个isa 指针,那么这个isa 指针指向什么地方呢?

1 instance的 isa 指向的是 class

当我们去创建一个类的对象并且去调用对象方法的时候,此时会通过instance 的isa 找到class,从而找到class 里面的对象方法进行执行

2 class 的 isa 指向meta-class

当调用类方法的时候,通过class的isa指针找到meta-class,进行调用类方法。

3 meta-class 的 isa 指向基类的meta-class 对象

 

OC—基础语法 一、Objective-C语言简介 Objective-C简称Obj-C或者OC,Objective的意思就是面向对象的。OC其实就是在C语言的基础之上,封装了一层面向对象的语法,他并不是一门全新的编程语言。OC是Mac OS X系统和iOS系统的主要开发编程语言,当然马上要被Swift给替代了,然并卵,我们还是得好好学习OC,因为现在大多数公司还是使用OC来做iOS开发。 二、第一个OC程序... 阅读详情

相关推荐

论文理解【LLM-Agent】——【SkillOpt】Executive Strategy for Self-Evolving Agent Skills

SkillOpt 将 agent skill 从人工或一次性 prompt artifact 转化为可验证、可控、可迁移的文本空间“可训练状态”,通过有界编辑、验证门控、拒绝编辑反馈和 slow/meta update,在不更新模型权重的情况下显著提升多类 agent 任务表现

佚失的诗篇 588

OC语言基础知识

  OC语言基础知识 一、面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类。 术语:OO面向对象、OOP面向对象编程   二、类 (一)关于类 类的设计只关注三个东西:类名、属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个...

weixin_33688840的博客 316

Word毕业论文排版:图片和表格题注的终极指南(含自动编号技巧)

本文是Word毕业论文排版中图片和表格题注的终极指南,详细讲解了如何利用题注功能实现自动编号,告别繁琐易错的手动操作。核心内容包括创建定制标签、配置带章节的编号格式、插入交叉引用以及一键更新全文编号的技巧,旨在帮助学生构建自动化文档体系,提升排版效率和论文严谨性。

weixin_29211309的博客 1094

OC对象的分类

1、实例对象(instance) instance对象就是通过类alloc出来的对象,每次调用alloc都会产生新的instance对象 NSObject *obj1 = [[NSObject alloc] init]; NSObject *obj2 = [[NSObject alloc] init]; NSLog(@"%p", obj1); NSLog(@"%p", obj2); 打...

GigibondBaby的博客 600

企业数字化转型的 4A 架构指南:从概念解读到 TOGAF 阶段对应

4A企业架构是中国数字化转型实践中总结的简化框架,包含业务、应用、数据和技术四个架构层。它自上而下形成业务驱动应用的指导关系,自下而上构建技术支撑数据的实现路径,与国际标准TOGAF核心内容高度对应。该模型通过统一语言、战略对齐和系统梳理,有效连接业务需求与IT实施,已成为企业架构规划的实用工具。其分层结构清晰展示了从业务目标到技术落地的完整推导链,特别适合中国企业的数字化转型场景。

友莘居士的博客 2175

[零基础]用docker搭建Hadoop集群

[零基础]用docker搭建Hadoop集群,每一步都有详细的解释!

weixin_56114243的博客 2万+

iOS - OC中对象的分类

OC中类对象,主要分为一下三种: (1).instance对象(实例对象) (2).class对象 (类对象) (3).meta-class对象(元类对象) 一、instance对象(实例对象) instance对象是通过类alloc init出来的对象,每次alloc init都会产生新的instance对象。 Person *person1 = [[Person allo...

u010707262的博客 246

因果推断综述-A Survey on Causal Inference

最近读到一篇讲述很全面的综述文献-《A Survey on Causal Inference》,对于接触因果推断不久的同学而言是特别详细的介绍和科普。文献很长,我会分成几部分介绍。 目录 摘要 第一部分:简介 第二部分:因果推断基础知识 第三部分:基于三种假设的因果推断方法 第四部分:实验 第五部分:应用 摘要 几十年来,因果推理是一个跨许多领域的关键研究主题,如统计、计算机科学、教育、公共政策和经济学。与随机对照试验相比,研究方向由于可用数据量大且预算要求低,如今,从观测数据..

海边凝望的博客 3182

OC对象和属性

对象和属性 类和对象 世间一切东西都可以当作对象. C中的数据类型有:int,float,double,char等等. 类是对象的类型.封装:对象中包括属性和方法,用属性和方法共同体现对象的特性,称为封装. OC的基本数据类型有:NSInteger(整型),NSUInteger(无符号整型),CGFloat(浮点型),char(字符型),NSString(字符串),NSArray(数组

a18825194的博客 1445

lammps多晶正弦粗糙界面建模

其中,30可以理解为正弦曲线的幅度,150为正弦曲线的基准坐标值,80控制周期,改变参数多试试就能找到规律。很久之前介绍过lammps粗糙界面建模,主要是在lammps中进行一维和二维的正弦粗糙面建模。运行完成后,会生成final.data,这个模型即为上表面为正弦波动的粗糙界面。新建1.py文件,粘贴下面内容后,运行:python 1.py。多晶需要在atomsk中进行,因此上述的方法就不再适用。最近有学员咨询多晶模型的正弦粗糙界面建模应该如何实现。在cmd窗口按顺序运行以下命令创建多晶模型。

lammps_jiayou的博客 387

手把手教你完成基于cnn的手写数字识别系统MATLAB语言

手写数字识别是经典的 CNN 分类应用之一,常用的数据集就是 MNIST 手写数字数据集,包含 0~9 这 10 个数字的手写图片,每个数字都由 6 万幅训练图像和 1 万幅测试图像构成。为了便于直观分析,这里选择 MATLAB 工具箱提供的 DigitDataset 进行训练识别,读者也可以直接利用 MNIST 数据集或者自己设计的数据集进行实验。其中,数据集文件夹 db 如图 所示。在数据集文件夹 db 里面对每个数字都建立了子文件夹,各自包含 1000 幅 28×28 大小的二维灰度图像。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1368

【iOS】OC对象的本质底层原理

OC对象的本质-底层原理

cheng_lin0201的博客 867

Loki 分布式日志中心服务

分布式日志中心 Loki + Promtail + Grafana

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 2353

【OC】OC语言学习——面向对象(下)

OC提供了NSValue、NSNumber来封装C语言基本类型(short、int、float等)。在 Objective-C 中,**包装类(Wrapper Classes)**是用来把基本数据类型(如 int、float、char 等)“包装”为对象的类。因为 Objective-C 是面向对象的语言,有时候我们需要把基本类型当作对象使用,比如:放入 NSArray、NSDictionary 这样的集合中(这些集合只能存放对象);使用对象方法对数值进行操作;与 Foundation 框架接口交互。

2402_86720949的博客 1518

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OC对象的本质

1.一个NSObject对象占用多少内存?1.一个NSObject对象占用多少内存?答:系统分配了16个字节给NSObject,但NSObject对象只使用了8个字节(64位环境下)

qq_43658148的博客 186

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OC面向对象(上)第5章

整理总结了一下最近两周学习OC的底章的内容。面对对象的程序设计过程中有两个重要的概念:类(class)和对象(object,也称为实例,instance)。类和对象是面向对象的核心。接口部分:定义类包含的成员变量和方法实现部分:为类的方法提供实现。int _count;id _data;@end@interface:用于声明定义类的接口部分@end:表明定义结束花括号中声明类的成员变量,花括号后面的部分用于声明类的方法其中,成员变量和方法是非常重要的概念。

2401_87841908的博客 765

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

OC-对象在内存中的存储

1.内存中的五大区域栈:存储局部变量 堆:允许程序员手动在堆区申请指定的连续的字节数的空间来使用 BSS段:存储未初始化的全局变量,静态变量 数据段(常量区):存储已经初始化的全局变量,静态变量,常量数据 代码段:存储程序的代码2.类加载当类第一次被访问的时候,会将类存储在代码段中,这个过程叫做类加载. 一旦类被加载到代码区,直到程序结束的时候才会被回收 1).当我们

jaoxiake的博客 1004

OC底层学习-对象的本质

OC学习-对象的本质1. OC对象的本质1.1结构的内存对齐1.2 怎么把OC类通过终端转换成C++文件1.3 查看源码1.4面试题:一个NSObject的对象占多少内存?1.5实时查看内存数据1.6 常用的LLDB指令1.7 示例-验证-结论2 .Instance对象2.1 instance对象2.2 Class对象2.3 meta_class元类对象2.4 isa指针2.5 .面试题2.5.1 对象的isa指针指向哪里2.5.1 OC的类信息存放在哪里?2.5 答疑 1. OC对象的本质 OC代码经过

yong_19930826的博客 881

OC底层-OC对象的本质

OC对象的本质 1.1、NSobject 对象底层实际是有一个isa指针的NSObject_IMPL结构体; 1.2、一个object对象会分配的到多少内存? 大小16个字节 ,可以用malloc_size输出查看大小;实际成员isa占用是8(64bit环境下),但是coreFoundtion框架内部规定小于16就分配16; (其实ios操作系统分配内存都是16的倍数,其实对象实际占不了那么大的内存) int 4个 bool 1个 class_getInstanceSize...

HPerry的博客 425

【OC】面对对象(下)

protocol 协议名 <父协议1,父协议2>零个到多个方法定义…协议名应该和类名使用相同的命名规则。一个协议可以有多个直接父协议,但协议只能继承协议,不能继承类。协议中定义的方法只有方法签名,没有方法实现,协议中包含的方法既可以是类方法,也可以是实例方法。//定义协议的方法@end再定义一个FKProductable协议,代表所有产品需要遵守的规范。@end。

2301_79847748的博客 1640

OC对象的本质(中):OC对象的分类

OC对象的本质(上):OC对象的底层实现原理 OC对象的本质(中):OC对象的种类 OC对象的本质(下):详解isa&superclass指针 Objective-C中的对象,简称OC对象,主要分3类 instance对象(实例对象) class对象(类对象) meta-class对象(元类对象) instance 实例对象 instance对象就是通过alloc方法创建出来的对象...

RUNNING-NIUER的博客 422

oc 笔记 面向对象下

在 Objective-C(OC)中,“包装类”通常是指的类。OC 是基于 C 的,所以也支持基本数据类型(如intfloatchar等),但有些场景下(如在集合中存储)只能使用对象类型,这时就需要用到“包装类”。

2501_91494333的博客 731

OC面向对象的思想

1.OC是面向对象的,C语言是面向过程的2.面向过程关注的是解决问题需要哪些步骤3.类只关心事物名称、属性、行为4.OC如何定义一个类#import &lt;Foundation/Foundation.h&gt; @interface Car : NSObject //表示继承自NSObject @end5.面向对象的思想——间接需要一个东西,不关心做法,让别人做好6.OC是面向对象的...

Code_BaiYE的博客 377

iOS OC对象的本质窥探(对象分类)(二)

上面一篇文章讲了OC对象的本质,编译成C++对象是以什么形式存储的,一个对象占多少内存空间等问题,那么在OC语言里面,又分为几种对象呢?其实平时的工作中通过[[NSObject alloc] init]这种形式创建的对象都是实例对象,另外还有两类平时接触甚少的对象,一个是类对象,一个就是元类对象。 开篇引题 类对象分为三种: 实例对象 类对象 元类对象 这三中类型的对象之间是什么关系?每种类型的...

muziyuting的博客 257

IOS学习笔记 第1篇 OC面向对象(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  类   第一个oc                                         属性 成员变量 行为 方法 对象   常见错误 oc方法和函数的区别 o8第2个oc 语法介绍 对象与函数参数 一种方式

大白天 668
上一篇: 4 OC 中的内存分配以及内存对齐
下一篇: 6 OC中 isa 和 superclass 的总结
Leonardo_Fibonacci
博客等级 码龄10年 110粉丝 247原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值