美文网首页
OC语言day06-01autorelease基本使用

OC语言day06-01autorelease基本使用

作者: liyuhong165 | 来源:发表于2016-06-15 23:12 被阅读34次

    pragma mark autorelease基本使用

    pragma mark 概念

    /**
     autorelease 基本概念
     
     作用 
     会对池子里面的所有对象做一次release操作
     
     好处
     不用再关心对象的释放时间
     不用再关心什么时候调用release
     
     */
    

    pragma mark 代码

    #import <Foundation/Foundation.h>
    #pragma mark 类
    #import "Person.h"
    #pragma mark main函数
    int main(int argc, const char * argv[])
    {
        /*
    
        @autoreleasepool {
             Person *p = [[Person alloc]init];
             [p run];
             
             #warning 时时刻刻都关注对象的什么时候被释放
             [p release];
             p = nil;
             
             
             //         [Person run]: message sent to deallocated instance 0x1006060f0
             //         野指针的错误 : 给一个已经 释放的对象 发送消息
             [p run];
        }
         */
    
        /*
        @autoreleasepool { // 创建一个自动释放池
            
    
            
            Person *p = [[Person alloc]init];
            
            // 不用关心对象什么时候释放,只要能够访问p的地方都可以使用p
            [p autorelease];    // 只要调用了autorelease, 那么久不用·调用release了
            
    //        [p retain];
            
            [p run];
        }  // 自动释放池销毁了,给自动释放池中所有的对象 发送 一条release消息
         */
        
    #warning autorelease 其它写法 @autoreleasepool ios5之后写的
        /*
        @autoreleasepool
        {
            Person *p = [[[Person alloc]init]autorelease];
            [p autorelease];
            
            [p run];
            
        }
         */
    #warning auterelease iOS5之前的创建方式
        // 创建一个自动释放池
        // 自动释放池只是将release延迟了而已,
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
        Person *p = [[Person alloc]init];
        
        // 销毁一个自动释放池
        [pool release];
        return 0;
    }
    
    Person.h //人类
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    - (void)run;
    @end
    
    Person.m
    #import "Person.h"
    
    @implementation Person
    
    - (void)run
    {
        NSLog(@"%s",__func__);
    }
    
    -(void)dealloc
    {
        NSLog(@"%s",__func__);
        [super dealloc];
    }
    @end
    

    相关文章

      网友评论

          本文标题:OC语言day06-01autorelease基本使用

          本文链接:https://www.haomeiwen.com/subject/cycmdttx.html