IOS-内存管理
文章平均质量分 74
low-profile
这个作者很懒,什么都没留下…
展开
-
OC底层原理-Block
对于block,在日常开发中经常会用到,但有时候会出现一些奇奇怪怪的问题,比如block的里面值没更新上,又比如block里面要改变一个外部变量的值,就得加上__block,不然编译器就会报错。那么,这次就来一次过搞清楚block背后不为人知的真相。Block的基本结构void blockTest(){ void (^block)(void) = ^{ NSLog(@"Hello World!"); }; block();}int main(int a原创 2022-01-04 23:19:08 · 1403 阅读 · 0 评论 -
内存对齐原理
字节对齐算法先了解一下字节对齐算法static inline size_t word_align(size_t x) { return (x + WORD_MASK) & ~WORD_MASK;}以传入的参数为11为例,先来计算一下结果(11+ 7)& ~7= (00001011 + 000001111) & (11111000)= 00010010 & 11111000= 00010000= 16...原创 2021-12-07 00:03:48 · 223 阅读 · 0 评论 -
OC底层原理-alloc流程
alloc流程分析可以通过opensource下载objc4来查看alloc的源码,这里用objc4-818版本来分析1.alloc+ (id)alloc { return _objc_rootAlloc(self);}2.objc_allocid objc_alloc(Class cls){ return callAlloc(cls, true/*checkNil*/, false/*allocWithZone*/);}3.callAllocstatic ALWAY原创 2021-11-13 18:33:04 · 1597 阅读 · 0 评论 -
ios内存概述
iOS内存管理在iOS中内存分为五大区域:栈去、堆区、全局区、常量区、代码区栈内存1、高地址向低地址扩展。2、一块连续的内存区域,遵循先进后出的原则。3、运行时分配,在iOS中以0x7开头4、由编译器自动分配并释放5、局部变量、函数参数堆内存1、低地址向高地址扩展2、不连续的内存区域,类似于链表,遵循先进先出的原则。3、运行时分配的,在iOS中以0x6开头4、程序员动态分配和释放的5、访问堆中内存时,一般需要通过对象读取到栈区的指针地址,然后通过指针地址访问堆区全局区原创 2021-09-05 22:46:12 · 293 阅读 · 0 评论