iOS ARC基本原理

时间:2014-03-14 18:46:07   收藏:0   阅读:686

一、ARC基本简介

二、ARC基本原理

1、规则

ARC 的规则非常简单:只要还有一个强指针变量指向对象,对象就会保持在内存中

2、强指针和弱指针

三、使用注意

ARC规则:类对象一旦没有强指针指向它则被销毁

验证代码:

bubuko.com,布布扣
/****************************** Person.h文件 ***********************************/
#import <Foundation/Foundation.h>
@interface Person : NSObject
@end

/****************************** Person.m文件 ***********************************/ #import "Person.h" @implementation Person - (void)dealloc { NSLog(@"Person对象被销毁"); } @end

/****************************** main.m文件 ***********************************/ #import "Person.h" #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { Person *p = [[Person alloc] init]; p = [[Person alloc] init];  // 这行代码执行完说明Person类对象的指针p 指向了另一个类对象 那么上面的类对象Person被销毁 执行一次dealloc方法
  return 0; 
}

// main方法执行完毕 局部变量p被回收那么第二个Person类对象也被回收再执行一次dealloc方法

// 再一次说明一个对象如果没有一个强指针指向它的话,对象就会被回收
bubuko.com,布布扣

 修改上面的main方法,验证下强指针和弱指针:

 

    __strong Person *p1 = [[Person alloc] init]; // 默认都是强指针因此需要写 __strong
    
    __weak Person *p2 = p1; // 将强指针指的内存地址 赋值给弱指针 那么强弱指针指向同一块内存地址
    
    p1 = nil; // 清空强指针 这行代码执行完毕就调用了 - dealloc方法 说明Person类对象被销毁了
    
    p2 = nil; // 清空弱指针 弱指针系统会自动清空 因此这行代码可以不写
    
    return 0;

iOS ARC基本原理,布布扣,bubuko.com

原文:http://www.cnblogs.com/QM80/p/3598853.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!