OC9_字符串的内存管理
//
// main.m
// OC9_字符串的内存管理
//
// Created by zhangxueming on 15/6/18.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> //字符串内存管理, retainCount的值可以不参考, 只需要遵守内存管理法则就行
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"hello world";
NSLog(@"str1 retainCount = %li", str1.retainCount);
NSString *str2 = [NSString stringWithString:str1];
NSLog(@"str2 retainCount = %li", str2.retainCount);
NSString *str3 = [[NSString alloc] initWithString:str1];
NSLog(@"str3 retainCount = %li",str3.retainCount); NSLog(@"str1 = %p str2 = %p str3 = %p", str1, str2, str3);
[str3 release]; NSString *str4 = [str3 retain];
NSLog(@"str4 retainCount = %li", str4.retainCount);
[str4 release]; NSString *str5 = [str4 copy];
NSLog(@"str5 retainCount = %li", str5.retainCount);
NSLog(@"str5 = %p str4 = %p", str5, str4);
[str5 release]; NSMutableString *mulStr1 = [[NSMutableString alloc] initWithString:str5];
NSLog(@"mulStr1 retainCount = %li", mulStr1.retainCount);
NSLog(@"mulStr1 = %p str5 = %p", mulStr1, str5); NSMutableString *mulStr2 = [mulStr1 retain];
NSLog(@"mulStr2 retainCount = %li", mulStr2.retainCount); NSString *str6 = [[NSString alloc] initWithString:mulStr1];
NSLog(@"str6 retainCount = %li", str6.retainCount); NSString *str7 = [[NSString alloc] init];//@""
NSLog(@"str7 retainCount = %li", str7.retainCount); NSLog(@"str6 = %p str7 = %p", str6, str7); NSString *str8 = [str7 stringByAppendingString:@"qian feng"]; NSLog(@"str8 retainCount = %li", str8.retainCount);
NSLog(@"str8 = %p", str8); [str6 release];
[str7 release];
[mulStr1 release];
[mulStr2 release];
}
return ;
}
OC9_字符串的内存管理的更多相关文章
- iOS开发-内存管理
内存管理 对于这篇呢,其实现在都是ARC模式,正常状态下基本不用我们去手动释放内存,所以如果不是要面试呀.装逼或者扎实功底的,就先别看了或者了解下即可,因为像面试时,有些面试官想看你的基础时,就有些人 ...
- 字符串输出输入函数,const修饰符,内存分区,动态内存管理,指针和函数,结构体
1.字符串输出输入函数 读入字符串的方法: 1) scanf 特点:不能接收空格 2) gets 特点:可以接受含有空格的字符串 ,不安全 3) fgets(); 特点:可以帮我们自动根据数组的长度截 ...
- Delphi内存管理(Integer、Boolean、Record、枚举等都是在作用域内编译器自动申请内存,出了作用域自动释放;另外,字符串、Variant、动态数组、接口也是由Delphi自动管理)
一.什么是堆.栈? 程序需要的内存空间分为 heap(堆) 和 stack(栈),heap 是自由存储区, stack 是自动存储区,使用 heap 需要手动申请.手动释放, stack 是自动申请. ...
- C 语言函数手册:涵盖字符测试、字符串操作、内存管理、时间换算、数学计算、文件操作、进程管理、文件权限控制、信号处理、接口处理、环境变量、终端控制
1. 字符测试函数 函数 说明 isascii() 判断字符是否为ASCII码字符 2. 字符串操作 函数 说明 gcvt() 将浮点型数转换为字符串(四舍五入) index() 查找字符串并返回首次 ...
- .NET基础拾遗(1)类型语法基础和内存管理基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- jvm--3.内存管理
5.JVM内存管理 JAVA虚拟机在执行java程序的过程中,会把它管理的内存分成若干个不同的数据区域. ----------------------------------------------- ...
- C++ 系列:内存管理
1.内存分配方式 内存分配方式有三种: (1)从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2)在栈上创建. 在执行函 ...
- iOS开发系列—Objective-C之内存管理
概述 我们知道在程序运行过程中要创建大量的对象,和其他高级语言类似,在ObjC中对象时存储在堆中的,系统并不会自动释放堆中的内存(注意基本类型是由系统自己管理的,放在栈上).如果一个对象创建并使用后没 ...
- Python深入06 Python的内存管理
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 语言的内存管理是语言设计的一个重要方面.它是决定语言性能的重要因素.无论是C语言的 ...
随机推荐
- oracle连接数据的oci和thin的区别
1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用上来讲thin还是更加方便,这也是thin比较常见的原因.2)原理上来看,thin是纯java实现 ...
- Codeforces Round #274 (Div. 1) A. Exams 贪心
A. Exams Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/480/problem/A Des ...
- HDU 2037 今年暑假不AC (贪心)
今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 硬盘安装centos
1.用pqmagic划分出来二个分区,第一个是ext3格式的,用于放centos镜像文件,第二个不用管是什么格式的,用于安装centos,我一般在磁盘最后面划分出来二个分区. 2.安装Ext2Fsd ...
- juggle
/** @inheritDoc */ public function advanceTime(time:Number):void { if (time == 0 || (mCurrentTime == ...
- Keeplived 配制图解
http://blog.csdn.net/tantexian/article/details/50056229
- Android的属性系统
http://blog.csdn.net/jerryutscn/article/details/5519423 Android的属性系统 每条属性包含了名字和其对应的值,两者都用字符串来描述.Andr ...
- Redis 客户端连接
Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻 ...
- 有符号的范围,-128~+127详解(zt)
这是一个困惑了我几年的问题,它让我对现在的教科书和老师极其不满,从我N年前开始摸电脑时,就几乎在每一本C++教科书上都说,8位有符号的取值范围是-128~+127,为什么不是-127~+127呢,后来 ...
- iOS之可拖拽重排的CollectionView
修复了拖拽滚动时抖动的一个bug,新增编辑模式,进入编辑模式后不用长按触发手势,且在开启抖动的情况下会自动进入抖动模式,如图: test.gif 图1:垂直滚动 drag1.gif 图2:水平滚动 d ...