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 ;
}
OC2_引用计数的更多相关文章
- Objective-C内存管理之引用计数
初学者在学习Objective-c的时候,很容易在内存管理这一部分陷入混乱状态,很大一部分原因是没有弄清楚引用计数的原理,搞不明白对象的引用数量,这样就当然无法彻底释放对象的内存了,苹果官方文档在内存 ...
- swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- C++ 引用计数技术及智能指针的简单实现
一直以来都对智能指针一知半解,看C++Primer中也讲的不够清晰明白(大概是我功力不够吧).最近花了点时间认真看了智能指针,特地来写这篇文章. 1.智能指针是什么 简单来说,智能指针是一个类,它对普 ...
- 【Python】引用计数
一.概述 要保持追踪内存中的对象,Python使用了引用计数这一简单的技术. 二.引用计数的增减 2.1 增加引用计数 当对象被创建并(将其引用)赋值给变量时,该对象的引用计数被设置为1. 对象的引用 ...
- iOS开发--引用计数与ARC
以下是关于内存管理的学习笔记:引用计数与ARC. iOS5以前自动引用计数(ARC)是在MacOS X 10.7与iOS 5中引入一项新技术,用于代替之前的手工引用计数MRC(Manual Refer ...
- Objective-C内存管理之-引用计数
本文会继续深入学习OC内存管理,内容主要参考iOS高级编程,Objective-C基础教程,疯狂iOS讲义,是我学习内存管理的笔记 内存管理 1 内存管理的基本概念 1.1 Objective-C中的 ...
- 第3月第2天 find symbolicatecrash 生产者-消费者 ice 引用计数
1.linux find export find /Applications/Xcode.app/ -name symbolicatecrash -type f export DEVELOPER_DI ...
- swif-自动引用计数
import UIKit /* class Person { let name: String //强引用 init(name: String) { self.name = name print(&q ...
- OC中的自动引用计数
目录: 1,自动引用计数的定义 2,强引用和弱引用 3,类比手动引用 4,循环引用 5,CoreFoundation 内容: 自动引用计数的定义: (Automatic Reference Count ...
随机推荐
- 关于2000W数据
前几天在博客园首页看到这个2000W数据的消息,刚好这个学期正在SQL入门,加上好奇心的驱使,把这个下载下来. 一个是600多M的CSV文件,还有一个是1.7G的SQL Server的备份文件,解压后 ...
- Codeforces Round #327 (Div. 2) A. Wizards' Duel 水题
A. Wizards' Duel Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/591/prob ...
- Android开发学习之 定制界面风格
统一的用户界面是可以使得应用程序更友好.要做到用户界面的统一,我们就必须用到风格(style)和主题(theme).OPhone系统提供了很多系统默认的风格和主题,但是很多情况下,这些不能满足我们的需 ...
- 安装 Nginx 并配置负载均衡
1,在节点 192.168.1.40 上执行安装 nginx,操作如下: 01 02 03 sudo apt-add-repository ppa:nginx/development sudo apt ...
- shared_ptr的简单实现
前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针 ...
- Programming Assignment 3: Collinear Points
The problem. Given a set of N distinct points in the plane, draw every (maximal) line segment that c ...
- java_线程安全-service
package com.demo.test; import java.util.Collections; import java.util.HashMap; import java.util.Map; ...
- Linux内核--网络栈实现分析(二)--数据包的传递过程--转
转载地址http://blog.csdn.net/yming0221/article/details/7492423 作者:闫明 本文分析基于Linux Kernel 1.2.13 注:标题中的”(上 ...
- python 学习笔记re
在学习python的过程中很多时候都需要用到re(正则),因为我也不是开发所以呢只是简单说一下经常需要用到的东西. 在工作中经常用到的主要是三个函数:1.math 2.search 3.sub ...
- myEclipse6.5与数据库(SQL Server2008)连接遇到的问题(自己总结的干货)<用SSH框架的时候,用servlet+javabean+jsp的时候>
昨天因为学习SSH框架的搭建,时隔一年又重新遇到了myEclipse连接数据库的问题.废话不多说,上干货 (以下全部按照我遇到的问题的顺序,也就是没有顺序,就是任性) 请注意:这是在myEclipse ...