1. //
  2. // Dog.h
  3. // OC2_引用计数
  4. //
  5. // Created by zhangxueming on 15/6/18.
  6. // Copyright (c) 2015年 zhangxueming. All rights reserved.
  7. //
  8.  
  9. #import <Foundation/Foundation.h>
  10.  
  11. @interface Dog : NSObject
  12. {
  13. NSString *_name;
  14. NSInteger _age;
  15. }
  16.  
  17. @property (copy, nonatomic) NSString *name;
  18. @property (nonatomic)NSInteger age;
  19.  
  20. @end
  21.  
  22. //
  23. // Dog.m
  24. // OC2_引用计数
  25. //
  26. // Created by zhangxueming on 15/6/18.
  27. // Copyright (c) 2015年 zhangxueming. All rights reserved.
  28. //
  29.  
  30. #import "Dog.h"
  31.  
  32. @implementation Dog
  33.  
  34. @end
  1. //
  2. // main.m
  3. // OC2_引用计数
  4. //
  5. // Created by zhangxueming on 15/6/18.
  6. // Copyright (c) 2015年 zhangxueming. All rights reserved.
  7. //
  8.  
  9. #import <Foundation/Foundation.h>
  10. #import "Dog.h"
  11.  
  12. //管理内存方式:
  13. //自动引用计数 automic refence counting
  14. //手动引用计数 manual refence counting
  15.  
  16. //gar --> automic refence counting yes --> no
  17.  
  18. int main(int argc, const char * argv[]) {
  19. @autoreleasepool {
  20. Dog *xiaoBai = [[Dog alloc] init];
  21.  
  22. NSLog(@"retainCount = %li", xiaoBai.retainCount);
  23.  
  24. //对对象进项保留, 增加对象的拥有权,使引用计数加1;
  25. //retain 的前提 是该对象存在
  26.  
  27. Dog *xiaoHei = [xiaoBai retain];
  28. //Dog *xiaoHei = xiaoBai; 只是xiaohei的指针指向xiaobai ,并没有retainCount加1.
  29. NSLog(@"retainCount = %li", xiaoHei.retainCount);
  30.  
  31. Dog *xiaoFei = [xiaoHei retain];
  32. NSLog(@"retainCount = %li", xiaoFei.retainCount);
  33.  
  34. //release 释放对象拥有权, 引用计数器的值-1;
  35. [xiaoBai release];
  36. xiaoBai = nil;
  37. NSLog(@"retainCount = %li", xiaoFei.retainCount);
  38.  
  39. [xiaoHei release];
  40. xiaoHei = nil;
  41. NSLog(@"retainCount = %li", xiaoFei.retainCount);
  42.  
  43. [xiaoFei release];//retainCount = 0 dealloc
  44. xiaoFei = nil;
  45. // NSLog(@"今天天气不错, 就是下了点雨");
  46. // NSLog(@"今天天气不错, 就是下了点雨");
  47. // NSLog(@"今天天气不错, 就是下了点雨");
  48. // NSLog(@"今天天气不错, 就是下了点雨");
  49. // NSLog(@"今天天气不错, 就是下了点雨");
  50. // NSLog(@"今天天气不错, 就是下了点雨");
  51. // NSLog(@"今天天气不错, 就是下了点雨");
  52. // NSLog(@"今天天气不错, 就是下了点雨");
  53. // NSLog(@"今天天气不错, 就是下了点雨");
  54. // NSLog(@"今天天气不错, 就是下了点雨");
  55. // NSLog(@"今天天气不错, 就是下了点雨");
  56. // NSLog(@"今天天气不错, 就是下了点雨");
  57. // NSLog(@"今天天气不错, 就是下了点雨");
  58. // NSLog(@"今天天气不错, 就是下了点雨");
  59. // NSLog(@"今天天气不错, 就是下了点雨");
  60. // NSLog(@"今天天气不错, 就是下了点雨");
  61. //对象被释放之后, 不能再给对象发送消息
  62. // NSLog(@"retainCount = %li", xiaoFei.retainCount);
  63. }
  64. return ;
  65. }

OC2_引用计数的更多相关文章

  1. Objective-C内存管理之引用计数

    初学者在学习Objective-c的时候,很容易在内存管理这一部分陷入混乱状态,很大一部分原因是没有弄清楚引用计数的原理,搞不明白对象的引用数量,这样就当然无法彻底释放对象的内存了,苹果官方文档在内存 ...

  2. swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  3. C++ 引用计数技术及智能指针的简单实现

    一直以来都对智能指针一知半解,看C++Primer中也讲的不够清晰明白(大概是我功力不够吧).最近花了点时间认真看了智能指针,特地来写这篇文章. 1.智能指针是什么 简单来说,智能指针是一个类,它对普 ...

  4. 【Python】引用计数

    一.概述 要保持追踪内存中的对象,Python使用了引用计数这一简单的技术. 二.引用计数的增减 2.1 增加引用计数 当对象被创建并(将其引用)赋值给变量时,该对象的引用计数被设置为1. 对象的引用 ...

  5. iOS开发--引用计数与ARC

    以下是关于内存管理的学习笔记:引用计数与ARC. iOS5以前自动引用计数(ARC)是在MacOS X 10.7与iOS 5中引入一项新技术,用于代替之前的手工引用计数MRC(Manual Refer ...

  6. Objective-C内存管理之-引用计数

    本文会继续深入学习OC内存管理,内容主要参考iOS高级编程,Objective-C基础教程,疯狂iOS讲义,是我学习内存管理的笔记 内存管理 1 内存管理的基本概念 1.1 Objective-C中的 ...

  7. 第3月第2天 find symbolicatecrash 生产者-消费者 ice 引用计数

    1.linux find export find /Applications/Xcode.app/ -name symbolicatecrash -type f export DEVELOPER_DI ...

  8. swif-自动引用计数

    import UIKit /* class Person { let name: String //强引用 init(name: String) { self.name = name print(&q ...

  9. OC中的自动引用计数

    目录: 1,自动引用计数的定义 2,强引用和弱引用 3,类比手动引用 4,循环引用 5,CoreFoundation 内容: 自动引用计数的定义: (Automatic Reference Count ...

随机推荐

  1. LCD_ILI9320横竖屏方向的问题。

    发现仅仅设置R03H是不能设置方向的,还需要设置R32H,R33H的坐标位置. 比如我现在是 R03H=0x1000H,R20H=239-x,R21H=319-y:竖直正向 R03H=0x1030H, ...

  2. Codeforces Gym 100523C C - Will It Stop? 水题

    C - Will It Stop?Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...

  3. 也谈读书和书籍选择问题(C#)

    前言 读到一篇.net程序员应该看什么书?深有感触.以前曾经用C#也开发过几年的东西.在那里对相关语言和开发都有了一定的了解.这里,结合自己当初的一些体会和见识把一些比较好的书籍也和大家分享一下.这一 ...

  4. 从零开始学习Hadoop--前言

    Hadoop是最著名使用最广泛的分布式大数据处理框架,它是用Java开发的. 这本书有一个明确的目标:只要有一台能上网的计算机,就可以让读者在最短的时间内,学会Hadoop的初级开发.所以,这本书只讲 ...

  5. [OSG]如何用Shader得到物体的世界坐标

    来自:http://www.cnblogs.com/hesicong/archive/2008/05/27/1208312.html 最近群里面有个朋友问我关于如何得到OpenGL世界坐标的问题,当时 ...

  6. iOS开发——实用篇&KVO与KVC详解

    KVO与KVC详解 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC ...

  7. Java基础:Collection—List&Set

    List和Set: List可以将元素维护在特定的序列中.它的特点是有序,允许重复元素出现.最常见的List的实现类是:ArrayList. Set的特点是:无序,不保存重复元素.当尝试将重复的元素添 ...

  8. C语言结构体和联合体

    1.单链表插入 #include <stdio.h> #include <stdlib.h> #define FALSE 0 #define TRUE 1 typedef st ...

  9. 使用jquery实现局部刷新DIV

    实现页面的定时刷新功能:jquery使用的是jquery-1.8.3.min.js1:定时刷新 A界面的一段代码如下:<script type="text/javascript&quo ...

  10. Weblogic 10.3.6 在RHEL5.4 下安装

    一WebLogic简介 webserver是用来构建网站的必要软件.可用来解析.发布网页等功能,它是用纯java开发的.weblogic本来不是由bea发明的,是它从别人手中买过来,然后再加工扩展.B ...