鱼人学习小计(四)

内存管理:
因为手机硬件的内存及其有限,当一个程序占用内存过高时,系统会发出警告。为了更好的用户体验,ios引入了内存管理的概念。ios主要通过引用计数器实现对oc对象的内存管理,这种引用计数器通常只作用在oc对象上而非基本数据类型,因为数据类型对象一般存放在栈上,当代码块结束时,代码块所涉及的所有局部变量会弹栈清空,指向对象的指针也会被回收,而存放在堆上的oc对象虽然没有指针指向,但仍存在与内存中,容易造成内存泄漏。
mrc:由开发人员手动retain和release操作引用计数。
arc:自动生成retain和release操作代码,判断原则为 没有强指针指向的对象则会被自动释放。
block中的内存管理,详见//www.greatytc.com/p/ba825ef44d60
autoreleasepool自动释放池
mrc下,调用autorelease方法会将对象放入自动释放池内,当自动释放池释放时,会对池内所有变量做一次release操作。每个runloop都会自动产生一个自动释放池,当现runloop休眠或者迭代结束的时候,main 释放池会自动释放,当runloop唤醒或初始化时,会自动产生一个新释放池。释放池是栈序排列的,新创建的池会放在栈顶,优先释放。当遇到频繁创建临时对象时可考虑用自动释放池避免内存泄漏。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 2,026评论 1 16
  • iOS内存管理 概述 什么是内存管理 应用程序内存管理是在程序运行时分配内存(比如创建一个对象,会增加内存占用)与...
    蚊香酱阅读 5,768评论 8 119
  • 11.看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢? 为什...
    AlanGe阅读 766评论 1 4
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,222评论 30 472
  • 1,NSObject中description属性的意义,它可以重写吗?答案:每当 NSLog(@"")函数中出现 ...
    eightzg阅读 4,202评论 2 19