美文网首页
OC语言day06-04ARC基本概念

OC语言day06-04ARC基本概念

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

    pragma mark ARC基本概念

    pragma mark 概念

    /**
     MRC (Manual Reference Counting)    : 手动管理内存
     ARC (automatic Reference Counting) : 自动引用计数 (WWDC2011和iOS5引入的最大改革)
     
     ARC的注意点和优点
     注意点
     ARC 是编译器特性(Xcode的一个功能),而不是运行时特性
     ARC 不是其他语言的垃圾回收, 有着本质区别 (其他语言 是定时的去查看 有没有垃圾回收)
     
     ARC的优点
     完全消除了手动管理内存的烦琐,让程序员更加专注于app的业务                               
     基本上能偶避免内存泄露
     有时还能更加快速,因为编译器还可以执行某些优化
     
     ARC的判断原则
      只要还有一个强指针变量 指向对象, 对象就会保持在内存中
     
     强指针 (__strong)
      默认所有的指针变量都是强指针
     被__strong修饰的指针
     Perosn *p1 = [[Perosn alloc]init];
     __strong Person2 = [[Perosn alloc]init];
     
     弱指针 (__weak)
     
     */
    

    pragma mark 代码

    #import <Foundation/Foundation.h>
    #pragma mark 类
    #import "Person.h"
    #pragma mark main函数
    int main(int argc, const char * argv[])
    {
        
        /*
    //    Person *p = [[[Person alloc]init]autorelease];
    #warning 默认情况下所有的指针都是强指针
        Person *p = [[Person alloc]init];
        
    //    [p retain];
    //    [p release];
         */
        {
    #warning ARC 的 判断准则
            // ARC 的 判断准则 : 只要没有强指针指向对象, 对象就会释放
            // 默认情况下 所有的指针都是强指针
            
    //        Person *p = [[Person alloc]init];
    //                p = nil;
    #warning 强指针和弱指针
            /*
            __strong Person *p = [[Person alloc]init];
            // 弱指针
            __weak Person *p2 = p ;
            p = nil;
             */
            
    #warning 在开发中,千万不要使用一个弱指针保存一个刚刚创建的对象
    //        __weak Person *p = [[Person alloc]init];
            
    #warning 单个对象的内存管理
            Person *p = [[Person alloc]init];
            p = nil;
            
        }
        
        
        return 0;
    }
    
    
    
    Person.h //人类
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    @end
    
    Person.m
    #import "Person.h"
    
    @implementation Person
    
    
    - (void)dealloc
    {
        NSLog(@"%s",__func__);
    //    [super dealloc];
        
    }
    @end
    

    相关文章

      网友评论

          本文标题:OC语言day06-04ARC基本概念

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