iOS一些相关面试题
2022-10-19 本文已影响0人
恋空K
指针在iOS64位里面占8个字节,所以这个结构体在内存中占8个字节,所以一个NSObject对象在内存中占8个字节。由于这个结构体的存储空间中就一个成员变量,就是只有一个isa指针。所以isa的地址就是这个结构体的地址,也是这个对象的地址值。首先分配存储空间给NSObject对象,然后将这个存储空间的地址值赋值给obj这个指针去存储,然后obj这个指针就可以指向这个对象
创建出来的实例对象只存储成员变量的。一个NSObject对象占多少内存?答:一个指针变量所占用的大小(64bit,8个字节。32bit,4个字节)
成员变量的值存放在实例对象里面,成员变量的类型,成员变量的名称存放在类对象里面
创建出来的实例对象只存储成员变量的。一个NSObject对象占多少内存?答:一个指针变量所占用的大小(64bit,8个字节。32bit,4个字节)
结构体内存对齐规则:
1、第一个成员的首地址为0.
2、每个成员的首地址是自身大小的整数倍
3、结构体的总大小,为其成员中所含最大类型的整数倍。
4.如果嵌套结构体,嵌套的结构体对齐到自己的最大对齐数的整数倍处,
结构体的整体大小就是所有最大对齐数(包含嵌套结构体的对齐数)的整数倍。
(2) 对于嵌套的结构体,需要将其展开。对结构体求sizeof时,上述两种原则变为:
(1)展开后的结构体的第一个成员的偏移量应当是被展开的结构体中最大的成员的整数倍。
(2)结构体大小必须是所有成员大小的整数倍,这里所有成员计算的是展开后的成员,
而不是将嵌套的结构体当做一个整体。
成员变量的值存放在实例对象里面,成员变量的类型,成员变量的名称存放在类对象里面