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语言的 ...
随机推荐
- 解决VS2012新建MVC4等项目时,收到加载程序集“NuGet.VisualStudio.Interop…”的错误
初装V2012,新建MVC4新项目时出现以下错误: 解决方法为: 通过VS2012的“工具-扩展和更新-联机”安装“NuGet Package Manager”扩展包,可以顺利新建MVC4项目啦!
- C语言中用宏来作注释
看了PostgreSQL的代码后,我觉得有不理解的地方,比如: 例如这样的: /* Options that may appear after CATALOG (on the same line) * ...
- iOS开发——新特性篇&swift新特性(__nullable和__nonnull)
swift新特性(__nullable和__nonnull) 最近在看老师写代码的时候经常遇到两个陌生的关键字,但是当我在我的电脑上敲得时候就是敲不出,后来才知道这是为了swift与OC混编的时候产生 ...
- mysqldump原理0
- /proc/sys/net/ipv4/下各项的意义
/proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的“Solaris middle star”.这个文件控制发送ICMP Tim ...
- XCode帮助文档离线下载解决办法
1.菜单栏Xcode->Preferences选择Documentation,在线下载 2.离线下载(用迅雷即可下载) 在上述在线下载列表中,点击某一列,下拉框可看见 info,可得到其网络所在 ...
- maven插件开发(二)
因为很多jar都是在开发环境中,没有到仓库中,因此偷个懒,用命令直接自动安装到仓库去.在开发的过程中遇到一个比较诡异的问题,插件用命令调mvn 安装jar到仓库总是抛如下异常: maven Canno ...
- SQL Server XML Path[转]
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- SparkStreamingTest.scala
/** * Created by root on 9/8/15. */ import org.apache.spark._ import org.apache.spark.rdd.RDD import ...
- 使用asp.net动态添加html元素
HtmlGenericControl gen = new HtmlGenericControl("div"); gen.InnerText = "HtmlG ...