OC的内存管理

OC内存管理常见的面试题

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-10 13:46:53
#####面试:说一说对内存管理的理解?(原理) - 手动内存管理(MRC):1.在创建一个对象的时候系统会自动创建这个对象的引用计数并赋值为1;2.当引用计数为0的时候,对象会去调用dealloc方法来销毁对象;3.对象调用release方法会让引用计数减1,retain方法会让引用计数加1; - 自动内存管理(ARC):1.在ARC管理内存的实质还是通过引用计数去管理的,但是程序员不再关心引用计数器的值,因为在ARC环境下,系统会在程序编译的时候会自动在合适的地方添加retain和release或者autorelease方法;在ARC中,当有强指针指向对象的时候对象不销毁,弱指针不影响对象的销毁,指针默认都是强指针,_weak:使用这个关键字修饰的指针都是弱指针;默认是_strong. #####面试题:内存管理的原则? - 手动内存管理的原则:程序中如果出现alloc,retain,new必须配对出现release或者autorelease:谁创建谁释放,在哪儿创建在哪儿释放;谁加1谁减1; #####为什么需要内存管理? - 内存管理的两大问题:内存泄露(没有释放)和野指针(没有使用或者置空) #####说说autoreleasePool和autorelease的作用: - autoreleasepool的原理