文档章节

OC中内存管理(MRC)--@autoreleasepool

AppleDream
 AppleDream
发布于 2016/03/31 13:18
字数 364
阅读 63
收藏 0

第一:如何使用,在5.0之前有一种使用,不过现在怕是见不到了(只要知道);第二种:@autoreleasepool{}

第二:注意点:不管你怎么写,一定要在{[ 你所创建的对象  autorelease ]}添加到释放池中;

        @autoreleasepool{}可以写任意个,也可以嵌套;

        @autoreleasepool{}尽量不要for循环,不可避免可以这样写:如下代码

for (int i=1;i<1000;i++)
{
    @autoreleasepool
    {
        Person *p=[[Person alloc] init];
    }
}

    @autoreleasepool{}也不要写太多的行数,如果有上万行代码,若一个对象在100行时就不用了。等值行一万后再释            放,显然也不合理;当然也不要存放占内存多的对象于释放池中。

第三:我们来看下嵌套的释放池;

@autoreleasepool{//第一个释放池
    @autoreleasepool{//第二个释放池
        @autoreleasepool{//第三个释放池
            Person *p=[[Person alloc] init];
        }
    }
}

我们来看下释放池在栈结构中方式:如下图

栈结构特点:先进后出,在上面执行对象实例化后,应放在第三个@autoreleasepool{}中的,因为有第三个堵住入口,是不可能放在第二个与第一个中的。

以上代码都未在Xcode下写,如有问题,欢迎指出

© 著作权归作者所有

AppleDream
粉丝 9
博文 92
码字总数 26198
作品 0
昆山
程序员
私信 提问
OC内存管理常见的面试题

#####面试:说一说对内存管理的理解?(原理) - 手动内存管理(MRC):1.在创建一个对象的时候系统会自动创建这个对象的引用计数并赋值为1;2.当引用计数为0的时候,对象会去调用dealloc方法来...

鹿微微鹿
2016/03/25
296
0
OC内存管理之MRC与ARC【摘选】

这个也许是问得最多的问题了吧。所有这些问题往往来源于3个地方,1、不了解底层机制;2、没有吃透规则; 3、不了解常用container的Reference Counting特性,或着说没有下功夫去看对应文档。 1....

wealpan
2013/12/09
1K
0
block本质探寻八之循环引用

说明:阅读本文,请参照之前的block文章加以理解; 一、循环引用的本质 //代码——ARC环境 void test1(){ } int main(int argc, const char * argv[]) { // test2(); } } #import NSASSUMENO...

春天里的花骨朵
01/18
0
0
OC 内存管理

引用计数的相关内容 ✓OC中内存管理机制就是引用计数 ✓每个对象都有引用计数,理论上如果对象的引用计数为0, 它就会自动释放对象,系统会回收它开辟的内存空间 ✓在实际的开发中,存在多个指针...

GLAlanTong
2016/02/29
29
0
iOS经典面试题总结--内存管理

我根据自己的情况做了一下总结,答案是我总结的,如有答的不好的地方,希望批评指正以及交流,谢谢! 内存管理 1.什么是ARC? ARC是automatic reference counting自动引用计数,在程序编译时...

刘星石
2016/03/04
27
0

没有更多内容

加载失败,请刷新页面

加载更多

采坑指南——k8s域名解析coredns问题排查过程

正文 前几天,在ucloud上搭建的k8s集群(搭建教程后续会发出)。今天发现域名解析不了。 组件版本:k8s 1.15.0,coredns:1.3.1 过程是这样的: 首先用以下yaml文件创建了一个nginx服务 apiV...

码农实战
5分钟前
1
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第6题

choose three Which three statements are true about indexes and their administration in an Orade database? A) An INVISIBLE index is not maintained when Data Manipulation Language......

oschina_5359
7分钟前
1
0
阿里巴巴开源 Dragonwell JDK 最新版本 8.1.1-GA 发布

导读:新版本主要有三大变化:同步了 OpenJDK 上游社区 jdk8u222-ga 的最新更新;带来了正式的 feature:G1ElasticHeap;发布了用户期待的 Windows 实验版本 Experimental Windows version。...

阿里巴巴云原生
12分钟前
1
0
教你玩转Linux—磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用三个命令为df、du和fdisk。 df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少...

xiangyunyan
15分钟前
3
0
js 让textarea的高度自适应父元素的高度

textarea按照普通元素设置height是没有作用的,可以这么来设置, 下面给上一段项目代码 JS代码: $.fn.extend({ txtaAutoHeight: function () { return this.each(function () {...

文文1
16分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部