objective-c内存管理中autorelease的作用

    //创建自动释放池
    @autoreleasepool {
        //autorelease会将对象放入自动释放池中,并返回该对象本身
        //当自动释放池销毁时,将自动调用对象的release方法
        Person *p = [[[Person alloc] init] autorelease];
        p.age = 10;

        NSLog(@"person is %d",p.age);
    }
    //销毁自动释放池
时间: 2024-10-14 11:44:34

objective-c内存管理中autorelease的作用的相关文章

Objective C 内存管理[转]

1  配对原则 alloc – release new – release retain - release copy – release 2  new和alloc-init的区别 (1)区别只在于alloc分配内存的时候使用了zone. 这个zone是个什么呢? 它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度. (2)为什么不推荐使用new 因为若用了new,则初始化方法只能是init.这样,假如你想调用initWithFram

objective C 内存管理及属性方法详解

oc为每个对象提供一个内部计数器,这个计数器跟踪对象的引用计数,当对象被创建或拷贝时,引用计数为1,每次保持对象时,调用retain接口,引用计数加1,如果不需要这个对象时调用release,引用计数减1,当对像的引用计数为0时,系统就会释放掉这块内存,释放对象调用dealloc 当对象包含其他对象时,就得在dealloc中自己释放他们 NSObject是IOS所有类的基类 有两个基本函数,alloc和dealloc alloc类似于C++的new,dealloc类似于delete 当对象的re

Linux内存管理中的slab分配器

转载自:http://edsionte.com/techblog/archives/4019 Linux内核中基于伙伴算法实现的分区页框分配器适合大块内存的请求,它所分配的内存区是以页框为基本单位的.对于内核中小块连续内存的请求,比 如说几个字节或者几百个字节,如果依然分配一个页框来来满足该请求,那么这很明显就是一种浪费,即产生内部碎片(internal fragmentation) 为了解决小块内存的分配,Linux内核基于Solaris 2.4中的slab分配算法实现了自己的slab分配器.

【iOS系列】-autorelease的作用

内存管理原则(配对原则):只要出现了new,alloc,retain方法,就要配对出现release,autorelease 1:对象存入到自动释放池中,当这个池子被销毁的时候他会对池子中所有的对象进行一次release操作. 2:autorelease 加入几次,就会被释放几次 3:不管你这个对象时在@autoreleasepool 之内创建的还是在之外创建的,只要你在池子中调用了autorelease那么这个对象就会被放入到池子中 4:autorelease的作用域:是代码块结束. @aut

OC 内存管理-02 autorelease 概念 以及用法

(1) @autoreleasepool { }//自动释放池代表,池子将要被销毁,对池子中所有的对象进行一次release操作 (2) 不管你这个对象时在@autoreleasepool 之内创建的还是在之外创建的,只要你在池子中调用了autorelease那么这个对象就会被放入到池子中 (3) 只有在自动释放池的作用域中调用对象的autorelease方法才能够正确的讲对象放入到池子中 (4) 如果在自动释放池中一个对象被多次释放[autorelease],那么会报野指针错误 -------

java虚拟机内存区域的划分以及作用详解

序言 为什么有时候学着学着会突然之间觉得一切度是那么无趣,男的每个月也有那么几天难道?哈哈,不然是什么,我还是要坚持,可以做少一点,但是不能什么度不做.总会过去的,加油 --WH 一.运行时数据区 什么叫运行时数据区呢,看下图就知道了,今天的重点就围绕这张图讲. 1.程序计数器(寄存器) 当前线程所执行的字节码行号指示器 字节码解释器工作依赖计数器控制完成 通过执行线程行号记录,让线程轮流切换各条线程之间计数器互不影响 线程私有,生命周期与线程相同,随JVM启动而生,JVM关闭而死 线程执行Ja

黑马程序员-内存管理之autorelease和ARC机制

一.autorelease 之前我们都是手动release对象,但是有时候我们需要延迟release对象,这里我们就需要用到autorelease,系统会把当前对象放在当前的autorelease pool中,当autorelease pool销毁时,会把当前池子中的所有对象做一次release操作.对于每一个Runloop, 系统会隐式创建一个Autorelease pool,这些池子都是以栈结构的形式存在,在每一个Runloop结束时,当前栈顶的池子会被销毁,所有对象做一次release操作

内存对齐的规则以及作用

首先由一个程序引入话题: //环境:vc6 + windows sp2 //程序1 #include <iostream> using namespace std; struct st1 { char a ; int b ; short c ; }; struct st2 { short c ; char a ; int b ; }; int main() { cout<<"sizeof(st1) is "<<sizeof(st1)<<e

iOS核心语言Objective C语言 —— 内存管理

本分享是面向有意向从事iOS开发的伙伴以及苹果产品的发烧友们,或者已经从事了iOS的开发者,想进一步提升者.如果您对iOS开发有极高的兴趣,可以与我一起探讨iOS开发,一起学习,共同进步.如果您是零基础,建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在开始Objective C语言的学习,如果您遇到问题也可以与我探讨,另外将无偿分享自己整理出来的大概400G iOS学习视频及学习资料,都是干货哦!可以新浪微博私信?关注极客James,期待与您的共同学习和探讨!!由于时间有限,每天在