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

在isa指针旁边的实例对象中存储了什么类型的信息?

在isa指针旁边的实例对象中存储了对象的引用计数和其他与对象相关的信息。

引用计数是一种内存管理技术,用于跟踪对象被引用的次数。当一个对象被引用时,引用计数会增加;当一个引用被释放时,引用计数会减少。当引用计数为0时,表示该对象不再被引用,可以被回收内存。

除了引用计数,实例对象还可能存储其他与对象相关的信息,例如对象的类信息、实例变量的值、对象的方法列表等。这些信息可以帮助程序在运行时对对象进行操作和访问。

在腾讯云的产品中,与云计算相关的服务包括云服务器、云数据库、云存储、人工智能等。具体推荐的产品和介绍链接如下:

  1. 云服务器(ECS):提供弹性计算能力,支持多种操作系统和应用场景。了解更多:https://cloud.tencent.com/product/cvm
  2. 云数据库(CDB):提供高可用、可扩展的数据库服务,支持多种数据库引擎。了解更多:https://cloud.tencent.com/product/cdb
  3. 云存储(COS):提供安全可靠的对象存储服务,适用于存储和处理各种类型的数据。了解更多:https://cloud.tencent.com/product/cos
  4. 人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。了解更多:https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS底层原理总结 - 探寻OC对象本质

instance对象在内存存储信息包括 isa指针 其他成员变量 ? instance对象内存 衍生问题:在上图实例对象根本没有看到方法,那么实例对象方法代码放在什么地方呢?...可以通过打印内存地址证明 class对象在内存存储信息主要包括 isa指针 superclass指针属性信息(@property),类成员变量信息(ivar) 类对象方法信息(instance...class对象在内存存储信息图例 成员变量值时存储实例对象,因为只有当我们创建实例对象时候才为成员变赋值。但是成员变量叫什么名字,是什么类型,只需要有一份就可以。...meta-class对象和class对象内存结构是一样,但是用途不一样,在内存存储信息主要包括 isa指针 superclass指针类方法信息(class method) ?...对象isa指针指向哪里 当对象调用实例方法时候,我们上面讲到,实例方法信息存储class类对象,那么要想找到实例方法,就必须找到class类对象,那么此时isa作用就来了。

1.2K50

深入浅出 Runtime(六):相关面试题

isa指针用来维护对象和类之间关系,并确保对象和类能够通过isa指针找到对应方法、实例变量、属性、协议等; arm64 架构之前,isa就是一个普通指针,直接指向objc_class,存储着Class...要通过位运算将isa值& ISA_MASK掩码,才能得到class、meta-class对象内存地址; isa指针存储信息isa指针指向。...class、meta-class底层结构都是objc_class结构体,objc_class继承自objc_object,所以它也有isa指针,它也是对象; class存储实例方法、成员变量、属性...、协议等信息, meta-class存储着类方法等信息isa指针和superclass指针指向; 基类meta-classsuperclass指向基类class, 决定一个性质:当我们调用一个类方法...类内存布局在编译时就已经确定,类实例变量列表存储class_ro_t结构体里,编译时就确定内存大小无法修改,所以不能向编译后类增加实例变量。 能向运行时动态创建类增加实例变量。

65310

本质-类对象

对象是一种数据结构,存储基本信息:类大小,类名称,类版本,继承层次,以及消息与函数映射表等 类对象代表类,Class类型,对象方法属于类对象 如果消息接收者是类名,则类名代表类对象 所有类实例都由类对象生成...每一个对象 都有一个名为isa指针,指向该对象类。 每一个类都描述一系列它实例特点,包括成员变量列表,成员函数列表等。...实际编程,我们几乎不会遇到向元类发消息情况,那它isa 指针实际上很少用到。不过这么设计保证面向对象干净,即所有事物都是对象,都有isa指针。...引用《Effective Objective-C 2.0 编写高质量iOS与OS X代码52个有效方法》一段话:superclass指针确定继承关系,而isa指针描述实例所属类。...而本质上,这两个类型信息查询方法是使用对象isa指针获取对象所属类(因为类对象也是对象,所以也有isa指针,该指针指向元类,也就是类对象所属类),然后通过类继承体系superclass指针继承体系中游走

9.3K50

对象原理探究(二)

1表示是nonpointer,即开启指针优化,也就是说该isa里面除了绑定对象地址,还携带了其他一些信息。...现在我们可以更深刻地感知到,isa指针是可以存储很多信息,而这些信息都是跟该对象有关,如果我直接通过属性来存储这些信息,势必会浪费很多内存空间。...isa联合体,类结构绑定 上面我们有提到,nonpointerisa指针,会有一个shiftcls来存储指针,即绑定对应类地址。isa初始化代码如下: ?...我们可以看到,如果该指针不是nonpointer类型,那么就直接给其cls赋值,如下: isa.cls = cls; 如果该指针是nonpointer类型,则会进行相关信息初始化,其中一个就是对应类信息初始化...正确答案是:所有实例对象第一个属性必然都是isa,它在内存位置永远都是最开始。

35310

ios 底层原理 : 类与类结构分析

,类之间才存在继承关系 objc_class & objc_object isa 走位理清楚,又来了一个新问题,为什么对象和类都有 isa 属性?...,NSObject isa底层是由 class 定义,其中 class 底层编码来自于objc_class 类型,所以 NSObject也拥有 isa 属性 NSObject 是一个类,用它来初始化一个实例对象...png 类结构分析 主要分析类信息主要存储哪些内容 补充知识:内存偏移 分析类结构之前,需要了解内存偏移,因为类信息访问时,需要用到内存偏移 [普通指针] int a = 10;...在前面我们提到了元类,类isa就是指向元类,元类是用来存储类相关信息,所以猜测,类方法是否存储元类bits当中,可以通过lldb命令验证一下 image.png 通过图中元类列表打印结果,可以得到以下结论...类实例方法存储bits属性类方法存储元类bits属性

58820

iOS-class方法和objc_getClass方法

Objective-C类型结构,Object(实例),Class(类),Metaclass(元类),Rootclass(根类),Rootclass‘s metaclass(根元类),且这些都是对象...Object-C,Object本质上是一个struct,在这个struct中会保存一个名为isa指针,该指针会指向该Object类。...id就是上面这样定义,所以类实例初始化完了之后,它内部就多了一个isa指针,这个指针类型指向是struct objc_class结构体,其实也就是指向这个实例所属类。...2、obj为Class类对象 Objective-C,任何类定义都是对象(除了int、char等这些基本类型)。类和类实例对象)没有任何本质上区别。任何对象都有isa指针。...: people:isa指针+仅存储Person类成员变量值; People:isa指针+superclass指针+存储成员变量类型、名称,协议,对象方法等; peopleMeta:isa指针+superclass

46510

iOS runtime探究(一): 从runtime开始理解面向对象类到面向过程结构体你要知道runtime都在这里

Class类型isa指针,Class是结构体指针,指向struct objc_class,那这个结构体又是什么呢?...类对象元数据存储都是如何创建一个实例相关信息,那么类对象和类方法应该从哪里创建呢?...就是从isa指针指向结构体创建,类对象isa指针指向我们称之为元类(metaclass),元类中保存创建类对象以及类方法所需所有信息,因此整个结构应该如下图所示: ?...,而元类super_class指针指向父类元类,那元类isa指针又指向什么?...总结 通过上文代码分析,我们已经了解了OC类和实例是如何映射到C语言结构体实例对象是一个结构体,这个结构体只有一个成员变量,指向构造它那个类对象,这个类对象存储一切实例对象需要信息包括实例变量

732120

OC类原理探究(一)

非nonpointer指针没有经过优化,它里面只通过cls属性存储对应地址; nonpointer指针是经过优化,它通过bits存储很多信息。...我们前面也讲到,nonpointerisa指针可以存储很多额外信息,并且其存储信息内存布局是跟架构有关,下面这张图可以很形象地将该布局给展示出来: ?...类结构分析 类是使用Class来接收,这一点我们开发已经非常熟悉。所以关于类结构分析,我们就从Class定义开始。...我们总说万物皆对象,类也是对象,就是出自于这里。 我们还发现,objc_class中有一个隐藏Class类型isa指针。为什么是隐藏呢?...最后我们元类baseMethodList中找到了sayHappy方法。 这就验证实例对象类方法是存在元类baseMethodList。 以上。

43630

iOS RunTime之二:数据结构

Class 从源文件看出,Objective-C对象就是一个包含isa指针数据结构,而isa指针数据类型是Class,Class表示对象所属类。 ?...version:提供类版本信息,这对于对象序列化非常有用,它可是让我们识别出不同类定义版本实例变量布局改变。 info:类信息,供运行期使用一些位标识。...Method Method是一种代表类某个方法类型。 ? Paste_Image.png 而objc_method在上面的方法列表中提到过,它存储方法名,方法类型和方法实现: ?...方法类型method_types是个char指针,其实存储着方法参数类型和返回值类型。 method_imp指向方法实现,本质上是一个函数指针。...当对象receiver调用方法message时,首先根据对象receiverisa指针查找到它对应类,然后methodLists搜索方法,如果没有找到,就使用super_class指针到父类

54720

OC对象原理(二)

1表示是nonpointer,即开启指针优化,也就是说该isa里面除了绑定对象地址,还携带了其他一些信息。...现在我们可以更深刻地感知到,isa指针是可以存储很多信息,而这些信息都是跟该对象有关,如果我直接通过属性来存储这些信息,势必会浪费很多内存空间。...isa联合体,类结构绑定 上面我们有提到,nonpointerisa指针,会有一个shiftcls来存储指针,即绑定对应类地址。...正确答案是:所有实例对象第一个属性必然都是isa,它在内存位置永远都是最开始。...isa走位 我isa指针中介绍过isa走位,结论就是: 类实例对象isa指向类对象,类对象isa指向元类对象,元类对象isa指向根元类对象,根元类对象isa指向其自身。

68610

「类与对象」说一说isa指针

isa作用 文章NSObject对象分类,详细讲解了isa指针指向、如何寻找实例方法和类方法以及如何通过isa指针找到类对象和元类对象。...isa结构变化 ARM 32位时候,isa类型是Class类型,直接存储实例对象或者类对象地址, 具体结构如下所示: typedef struct objc_class *Class; typedef...struct objc_object { Class isa; } *id; ARM64结构下,isa类型变成了共用体(union),使用了位域去存储更多信息。...,这导致位段本质上是不可移植。...isa位域 nonpointer:占用1bit 0,代表普通指针存储着Class、Meta-Class对象内存地址; 1,代表优化过,使用位域存储更多信息; has_assoc:占用1bit

67520

OC类原理(一)

前面两篇文章介绍OC对象原理,以及一些分析思路和方法,今天开始,将开启类原理探究。 不过探究类原理之前,我想补充说明一些东西。...非nonpointer指针没有经过优化,它里面只通过cls属性存储对应地址; nonpointer指针是经过优化,它通过bits存储很多信息。...我们前面也讲到,nonpointerisa指针可以存储很多额外信息,并且其存储信息内存布局是跟架构有关,下面这张图可以很形象地将该布局给展示出来: 接下来再来了解下指针和内存平移概念。...我们总说万物皆对象,类也是对象,就是出自于这里。 我们还发现,objc_class中有一个隐藏Class类型isa指针。为什么是隐藏呢?...接下来我们查看ro: 最后我们元类baseMethodList中找到了sayHappy方法。 这就验证实例对象类方法是存在元类baseMethodList。 以上。

49420

Objective-C对象模型和runtime机制「建议收藏」

能够objc.h文件里查找到对象结构定义,例如以下所看到对象结构为Class类型isa,而Class是 objc_class结构类型指针。 objc_class即我们理解对象结构。...)、元类(元类对象)和实例对象关系 一个完整类应该包含类方法、实例方法和成员变量(实例变量), 每一个对象都包含一个isa(is a class)指针指向类对象(执行时方法发送给对象消息,才确定类别并调用相应方法实现...类对象结构记载全部信息。 类对象isa指向元类对象(meta class),类对象方法列表是实例方法(-, instance methods)。...定义实例对象时候,并不会进行不论什么存储空间(堆)分配,直到调用类方法alloc函数和实例方法init函数实现实例对象结构存储分配。并将isa指向其类对象。...提供相关支持代码叫做OC执行期环境(OC runtime),它提供对象间传递消息重要函数(比方objc_msgSend),而且包含创建类实例所用全部逻辑(即创建实例对象存储结构和空间,包含isa

23720

「类与对象」说一说isa指针

isa指针前,我们先来看一道经典面试题: 对象isa指针指向哪里? 看到这道面试题,心中可能朦朦胧胧有些答案,也可能不太确定,抑或说不明白。 那咱就带着这个问题,揭开isa指针神秘面纱。...isa作用 文章NSObject对象分类,详细讲解了isa指针指向、如何寻找实例方法和类方法以及如何通过isa指针找到类对象和元类对象。...isa结构变化 ARM 32位时候,isa类型是Class类型,直接存储实例对象或者类对象地址, 具体结构如下所示: typedef struct objc_class *Class; typedef...struct objc_object { Class isa; } *id; ARM64结构下,isa类型变成了共用体(union),并且使用了位域去存储更多信息。...isa位域 1.nonpointer:占用1bit; 0,代表普通指针存储着Class、Meta-Class对象内存址; 1,代表优化过,使用位域存储更多信息; 2. has_assoc:

34020

深入浅出 Runtime(二):数据结构

我们平时使用所有对象都是id类型,id类型对象对应到runtime,就是objc_object结构体。...,请查看: 深入浅出 Runtime(三):消息机制 3. isa 指针 isa指针用来维护对象和类之间关系,并确保对象和类能够通过isa指针找到对应方法、实例变量、属性、协议等; arm64...instance对象isa指向class对象,class对象isa指向meta-class对象; 从 arm64 架构开始,对isa进行了优化,变成了一个共用体(union)结构,还使用位域来存储更多信息...继承自objc_object,所以它也有isa指针,所以它也是对象; class存储实例方法、成员变量、属性、协议等信息, meta-class存储着类方法等信息isa指针和superclass...指针指向(如上图); 基类meta-classsuperclass指向基类class, 决定一个性质:当我们调用一个类方法,会通过classisa指针找到meta-class,meta-class

73210

runtime

:struct objc_class结构如下: isa指针:指向该对象所属类型类型对象(Class Object)。...Objective-C,类也是用对象来表示,而类isa指针指向它metaclass(存储静态成员变量和类方法)。 super_class指针:指向父类。 name:类名称。...7、isa 指针 isa 指针是当你向对象发送消息时,Objective-C Runtime 检查一个对象并且查看它类是什么然后开始查看它是否响应这些 selectors 所需要一切。...它会发现一个对象实现许多方法。...所以这个类实现一个缓存,当你搜索一个类分发表,并找到合适 selector 后,就会把它放进缓存。所以当 objc_msgSend() 一个类查找 selector 时会先查找类缓存。

63520

iOS消息机制相关

(有父类时) 所有的父类成员变量以及自己都会存放在对象所对应存储空间中 每个对象都有一个isa指针,指向他对象,类对象存放着本身对象方法列表;成员变量列表;属性列表。...根对象是NSObject,superclass指针指向nil 类对象也是示例,也有一个isa指针指向他元类,即类对象元类实例,元类内部存放是类方法列表,根元类isa指针指向自己,superclass...实例方法: 实例方法是属于实例对象实例方法只能通过实例对象调用; 实例方法self是实例对象实例方法可以访问成员变量; 可直接调用实例方法; 可直接调用类方法 一个objc对象isa指针指向什么...指针查找 对象isa指向类,类isa指向元类(也是类,也是对象),元类isa指向元类根类,最终根元类isa指向它本身,形成一个封闭内循环。isa是帮助一个对象找到他方法。..._objc_msgForward函数作用,直接调用将会发生什么? 当对象没有实现某个方法时,会调用该函数进行方法转发。 直接调用该方法,就算实现要调用方法,也不会被调用,会直接走消息转发步骤

1.4K40

面试驱动技术之 - isa && 元类 && 函数调用

伪装成首页.jpg 面试驱动技术之 - 带着面试题来找答案 一个NSObject 对象,占用多少内存 对象方法 与 类方法存放在哪 什么isa指针 什么是meta-class megsend 是如何找到方法...是指针 sizeof是告诉你传入类型,占多少存储空间 ---- OC对象分类 实例对象(instance对象) 类对象(class对象) 元类对象(meta-class对象) instance 对象...通过类 alloc 出来对象 每次 alloc 都会产生新instance 对象(内存不相同) instance 对象存储信息 isa 指针 其他成员变量 class 对象 是创建对象蓝图...,描述所创建对象共同属性和方法(made in 维基百科) 类在内存只有一份,每个类在内存中都有且只有一个 class 对象 class对象在内存存储信息 isa 指针 superclass...指针对象方法 && 协议 类属性 && 成员变量信息 。。。

90520

聊几道面试题

norman是一个指针,它指向一块内存区域,该内存区域里面存储Norman实例对象,这块内存区域里面存储第一块内容就是isa指针,因此该内存区域地址就是isa指针地址,因此我们可以说,norman...指针指向isa指针地址;而isa指针又指向Norman类对象内存区域。...我们知道,一个实例对象内存结构,第一个就是isa指针isa指针占8个字节;从第二个开始,各个实例变量依次排列开来。...play方法里获取parents就是比cls指针往后移16个字节(isa8个+字符串类型name8个),因此打印是cls指针前面的前面压进栈那个指针,也就是ViewController实例对象指针...play方法里获取age就是比cls指针往后移16个字节(isa8个+字符串类型name8个),因此打印是cls指针前面的前面压进栈那个指针,也就是ViewController实例对象指针

29421

神经病院Objective-C Runtime入院第一天—isa和Class

这两个类都遵循NSObject协议。NSObject协议,声明了所有OC对象公共方法。 NSObject协议,有以下5个方法,是可以从Runtime获取信息,让对象进行自我检查。...所以objc_class也会包含isa_t类型结构体isa。至此,可以得出结论:Objective-C 类也是一个对象。...objc_class,除了isa之外,还有3个成员变量,一个是父类指针,一个是方法缓存,最后一个这个类实例方法链表。...引入元类之后,类对象对象查找方法机制就完全统一对象实例方法调用时,通过对象 isa 获取方法实现。 类对象类方法调用时,通过类 isa 元类获取方法实现。...obj被转换成了一个指向Sark Class指针,然后使用id转换成了objc_object类型。obj现在已经是一个Sark类型实例对象。当然接下来可以调用speak方法。

75130
领券