zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    [Unity3D]脚本中Start()和Awake()的区别
    win7中资源管理器不能显示图片预览的解决方法
    Unity Built-in Shader详解三
    Unity Built-in Shader详解二
    php扩展安装
    ImportError: No module named mysql 报错python引用mysql报错
    运维制度
    ps aux|awk -F'[ ]+' '$3>90{print $2}'|xargs -n1 kill -9
    运维面试必知十五大原理知识点
    resize2fs
  • 原文地址:https://www.cnblogs.com/0515offer/p/4586943.html
Copyright © 2011-2022 走看看