OC语言day06-04ARC基本概念

2016-06-15  本文已影响39人  liyuhong165

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

上一篇下一篇

猜你喜欢

热点阅读