//
// 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 ;
}

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. Hadoop on Mac with IntelliJ IDEA - 2 解决URI错误导致Permission denied

    本文讲述在IntelliJ IDEA中使用FileSystem.copyFromLocalFile操作Hadoop时因URI格式有误导致Permission denied的解决过程. 环境:Mac O ...

  2. AndroidEventBus ( 事件总线 ) 的设计与实现

    1. 功能介绍 AndroidEventBus是一个Android平台的事件总线库, 它简化了Activity.Fragment.Service等组件或者对象之间的交互,非常大程度上减少了它们之间的耦 ...

  3. 错误内存【读书笔记】C程序中常见的内存操作有关的典型编程错误

    题记:写这篇博客要主是加深自己对错误内存的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 对C/C++程序员来讲,内存管理是个不小的挑战,绝对值得慎之又慎,否则让由上万行代码构成的 ...

  4. Codeforces Round #332 (Div. 2) C. Day at the Beach 线段树

    C. Day at the Beach Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/599/p ...

  5. C 高级编程 1

    内存管理层次: 硬件层次: 内存结构管理 内核算层次: 内存映射 堆扩展 数据结构层次: 智能指针: stl :在多线程,共享内存有问题 SGI公司实现了STL ,开发了OPENGL库 语言层次:C: ...

  6. 高级进程间通信之基于STREAMS的管道

    基于STREAMS的管道(简称STREAMS管道,STREAMS pipe)是一个双向(全双工)管道.单个STREAMS管道就能向父.子进程提供双向的数据流. 将http://www.cnblogs. ...

  7. css 之position用法详解

    css  之position用法详解: http://www.jb51.net/web/77495.html

  8. 配置phpmyadmin使登录时可填写IP管理多台MySQL 连接多个数据库 自动登录

    一.如何设置phpMyAdmin自动登录? 首先在根目录找到config.sample.inc.php复制一份文件名改为config.inc.php(如果已经存在 config.inc.php 文件, ...

  9. 简化LINUX的命令输入 简化linux命令

    在LINUX中,有很多常用的命令,常用的命令我们可以熟练的记忆,但是对于不经常使用的命令恐怕是需要翻阅手册了,但是我们可以简化这些命令的输入来达到简便记忆的效果. 这里以BSH为例: 编辑/etc/b ...

  10. Python_爬虫4

    Python爬虫入门(8):Beautiful Soup的用法 上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则 ...