OC2_引用计数

//

//  Dog.h

//  OC2_引用计数

//

//  Created by zhangxueming on 15/6/18.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import <Foundation/Foundation.h>



@interface Dog : NSObject

{

    NSString *_name;

    NSInteger _age;

}



@property (copy, nonatomic) NSString *name;

@property (nonatomic)NSInteger age;



@end









//

//  Dog.m

//  OC2_引用计数

//

//  Created by zhangxueming on 15/6/18.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "Dog.h"



@implementation Dog



@end
//

//  main.m

//  OC2_引用计数

//

//  Created by zhangxueming on 15/6/18.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import <Foundation/Foundation.h>

#import "Dog.h"



//管理内存方式:

//自动引用计数 automic refence counting

//手动引用计数 manual refence counting



//gar --> automic refence counting  yes --> no



int main(int argc, const char * argv[]) {

    @autoreleasepool {

        Dog *xiaoBai = [[Dog alloc] init];

        

        NSLog(@"retainCount = %li", xiaoBai.retainCount);

        

        //对对象进项保留, 增加对象的拥有权,使引用计数加1;

        //retain 的前提 是该对象存在

        

        Dog *xiaoHei = [xiaoBai retain];

        //Dog *xiaoHei = xiaoBai; 只是xiaohei的指针指向xiaobai ,并没有retainCount加1.

        NSLog(@"retainCount = %li", xiaoHei.retainCount);

    

        Dog *xiaoFei = [xiaoHei retain];

        NSLog(@"retainCount = %li", xiaoFei.retainCount);

    

        //release 释放对象拥有权, 引用计数器的值-1;

        [xiaoBai release];

        xiaoBai = nil;

        NSLog(@"retainCount = %li", xiaoFei.retainCount);

        

        [xiaoHei release];

        xiaoHei = nil;

        NSLog(@"retainCount = %li", xiaoFei.retainCount);

        

        [xiaoFei release];//retainCount = 0 dealloc

        xiaoFei = nil;

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

//        NSLog(@"今天天气不错, 就是下了点雨");

    //对象被释放之后, 不能再给对象发送消息

    // NSLog(@"retainCount = %li", xiaoFei.retainCount);

    }

    return 0;

}

 

你可能感兴趣的:(引用)