社区
iOS
帖子详情
OC中alloc内存分配大小的问题
南窗客斯黄
2013-11-22 10:50:54
RT,OC中所有的类都继承自NSObject,NSObject实现了alloc函数,而NSObject的子类调用NSObject的alloc函数时,怎么知道要给这个子类分配多大的内存空间呢?
...全文
372
8
打赏
收藏
OC中alloc内存分配大小的问题
RT,OC中所有的类都继承自NSObject,NSObject实现了alloc函数,而NSObject的子类调用NSObject的alloc函数时,怎么知道要给这个子类分配多大的内存空间呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
早起晨练啊
2016-04-27
打赏
举报
回复
我觉得alloc的时候 ,allelic方法里回去调用runtime ,来获得子类的成员变量的信息, 从而确定需要分配的内存大小。
hy31---
2013-12-10
打赏
举报
回复
Xcode 会自动分配内存,你可以看一下init是什么时候进来,release 是什么时候release,这个你自己DEbug 的时候都可以看到==
五锅锅
2013-12-04
打赏
举报
回复
楼主解决了告诉声哈,,,
仙人掌绿叶
2013-12-04
打赏
举报
回复
这就是ios的优势,自动分配内存空间
RannieR
2013-12-02
打赏
举报
回复
一般是很小的。alloc时候类被加载进内存,存了这个类一些属性信息以及方法的地址值。
梓晨2011
2013-12-02
打赏
举报
回复
理解错了我,应该把OC里一个类的实例变量部分看做一个结构体,一个结构体的内存分配是静态时完成计算的,方法的存储应该类似于C函数的存储,
梓晨2011
2013-12-02
打赏
举报
回复
目测就是用C的动态内存分配完成的
南窗客斯黄
2013-11-25
打赏
举报
回复
加了20分,希望有高手进来帮忙解决。。
【ObjectC】
oc
中
的
内存分配
一、
内存分配
顺序 程序一启动的时候就会先加载代码区
中
的代码,然后加载常量区
中
的常量,接着加载全局区和静态区(初始化过的静态区和没有初始化过的静态区是分开的),以上四个区都是随着程序启动而加载到内存
中
,随着程序的退出而销毁。程序员不需要管理这一块的内存。 堆区:堆区用来存放对象,需要使用
all
oc
来分配内存空间。程序员需要管理堆区的内存。ARC的内存管理,是Xcode
01-
OC
对象占用内存
大小
例如 如果一个继承于NSObject的类有且只有一个CGRect属性,由于CGRect是结构体,最终由 4个 CGFloat类型构成,那么就是32个字节,再加上isa指针的8个字节,由于都是8字节数据类型,进行内存对齐法则之后,依然是8个字节,故最终占用40个字节,然后还要根据是16字节的倍数,所以这个对象最终开辟48个字节.是返回成员变量的
大小
,并非结构体本身的
大小
,NSObject成员变量有且只有一个isa指针,所以只有8个字节.源码可以查询到开辟空间规范限制,如下所示.使用如下方法发现,字节数是。
iOS底层探索二(
OC
中
all
oc
方法 初探)
前言 开发
中
我们经常会用到XZPerson *p= [[XZPerson
all
oc
]init],我们只知道,这样我们就新建了一个对象,可以直接使用这个对象,可以对这个对象进行赋值使用,但是我们没有关心过
all
oc
方法底层到底是通过什么方式进行实现的;今天我准备对
all
oc
方法进行一次尝试性底层挖掘;首先我们需要先准备一份可编译的objc4_756代码,可以直接进行下载探索...
OC
对象
all
oc
分析
首先我们先看下
all
oc
创建对象的一个整体流程图: 1. 如何分析
all
oc
方法的执行流程 1.1 通过符号断点分析 首先我们在
all
oc
方法调用的地方打上断点,待程序运行到改行时,按住 ctrl键,同时数遍点击 xcode底部的 Debug窗口的 step into即可进入。具体方法如下图所示: 注意:一定要在程序运行到
all
oc
方法的时候,在enable符号断点,否者程序运行时创建的类,会反复hit这个符号断点 1.2 直接阅读汇编代码 通过设置Always Show Disassembly阅读程
OC
对象内存
大小
探究
Objective-C编程语言是C语言的超集,在C语言的基础上加入了面向对象的内容。
OC
可以和C/C++混合使用,
OC
对象都可以转化为C/C++结构体表示。 要想知道一个NSObject对象占用多少内存,可以通过查看NSObject对象对应的C++结构体的
大小
来判断。 我们可以使用xcode的命令行来把指定的
OC
文件转成C++文件。 //main.m #import <Foundat...
iOS
29,031
社区成员
12,466
社区内容
发帖
与我相关
我的任务
iOS
主要讨论与iOS相关的软件和技术
复制链接
扫一扫
分享
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章