IOS-内存管理

来源:互联网 发布:抽签的软件 编辑:程序博客网 时间:2024/06/05 10:32

- (void)dealloc

{

    NSLog(@"租车行奉命回收车");

    //一个类的dealloc方法,需要调用父类的dealloc

    //所有代码都要卸载[super dealloc]之前

    //永远不要手动调用它;

    [super dealloc];

}

////出现的问题1.内存泄漏 2.内存过渡释放

////内存管理 手动管理(MRC   自动管理(ARC  --------垃圾回收是给MAC用的

////引用计数  是指拥有这块内存的个数  有多少的指针指向该内存

////alloc 0->1

////retain +1的意思

////copy(原来的不变新开辟的内存和以前的一样  然后引用计数0->1  alloc差不多)

////

////release是减少一个引用指向

////autorelease 延迟释放

////        7.0之后都是新建工程自动默认都是ARC

////        allcombine中更改自动

////        student * stu = [[student alloc] init];

////        //打印当前对象的引用计数  使用-retainCount方法

////        NSLog(@"当前的引用计数%lu",[stu retainCount]);

////        [stu retain];//对当前对象的引用计数+1;这个指针怎么得到

////        NSLog(@"当前的引用计数%lu",[stu retainCount]);

////        [stu retain];//对当前对象的引用计数+1;这个指针怎么得到

////        NSLog(@"当前的引用计数%lu",[stu retainCount]);

////        [stu copy];

////        [stu retain];//对当前对象的引用计数+1

////        [stu release];//对当前对象的引用计数-1

////        NSLog(@"当前的引用计数%lu",[stu retainCount]);

////        [stu autorelease];//当前不-1在未来某个地方引用计数-1

////        NSLog(@"当前的引用计数%lu",[stu retainCount]);

////----------------------------------

////        1.对象内存的所有权的指针才能够release改变引用计数;

////        alloc  retain  copy 都能使对象获得内存的所有权

////        release autorelease都能使对象放弃内存的所有权

////        2.有创建就有回收   有+1就有-1

////        3.引用计数的概念

////        4.在一个方法/类中,内存d引用计数要保持平衡。

////        5.dealloc方法在对象的引用计数为0时系统强制调用;用于回收内存

////        6.属性的内存管理  对象类型的属性,需要在dealloc中释放一次

//          7.自动释放池  负责释放池子范围内所有呗标记为autorelease的对象 @autoreleasepool{}

//          8.构造器的内存管理

//        在返回这个对象的时候,使用autorelease

//1.有创建就必须有释放 !

//! 2.⽤用引⽤用计数标识 拥有对象有所有权的拥有者(指针)的个数!

//! 3.使⽤用alloc retain copy 增加引⽤用计数 使⽤用release autorelease减少引⽤用计数!

//! 4.只有拥有对象所有权的拥有者才能对对象使⽤用内存管理代码!

//! 5.在⼀一个类/⽅方法中,⼀一个对象的引⽤用计数必须保持平衡,+1就有-1!

//! 6.当⼀一个对象的引⽤用计数被减为0,系统会⾃自动调⽤用对象的dealloc⽅方法!

//! 7.属性的内存管理:对象类型的属性,需要在dealloc⼿手动释放⼀一次!

//! 8.自动释放池: autoreleasepool的作⽤用机制:自动释放池负责管理所有在池⼦子范围内被标 记为autorelease的对象,并在 自动释放池结束时对 池⼦子中所有的对象release⼀一次!

//! 9.构造器的内存管理:因为构造器返回的对象需要被外界使⽤用,所以需要对它进⾏行延迟释,即对返回的对象标记autorelease!

//! 10.容器的内存管理 :容器类 会对所有加入到自身中的对象 retain⼀一次,用来保持对这些对象的所有权. 当这些对象被移除出容器时,容器会自动放弃对象的所有权,release⼀一次.


0 0