NSString初始化及其内存管理

1. NSString 3种初始化方法

a. 直接赋值: NSString *str = @"a string", 这种方式使用常量内存。

b. 使用类方法: NSString *str = [NSString stringWithString:@"a string"];

          NSString * str = [NSString stringWithFormat:@"age is %i, height is %f", 20, 180];

c. 使用实例方法: NSString *str = [[NSString alloc] initWithString:@"a string"];

          NSString *str  [[NSString alloc] initWithFormat:@"age is %i, height is %f",20,180];

2. NSString 内存管理

使 用Xcode 6.1.1 测试创建新的NSString,发现原来在Xcode4.6下没有警告的的initWithString和stringWithString都会有如下警 告出现,度娘发现已有答案,原因是因为新版的Xcode已经做了优化,意思是这种写法是多余的,建议直接 ’NSString *str = @"";‘这样的格式来写, 这样str的内存会直接从常量内存区开辟。

参考链接:http://www.cnblogs.com/celestial/archive/2012/10/10/2719169.html

         http://www.cnblogs.com/hellocby/archive/2012/08/23/2652201.html  

待补充...

时间: 2024-11-10 12:05:51

NSString初始化及其内存管理的相关文章

黑马程序员---OC基础6【内存管理】【手动内存管理】【单、多个对象的内存管理】【*@property参数】【@class的使用】【NSString类的内存管理】【autorelease使用】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [内存管理] 1.内存管理概念 由于移动设备内存及其有限,所以每个app所占的内存也是有限的 需要回收一些不使用的空间 2.OC内存管理的范围 管理任何继承NSOject的对象,对其他的基本数据类型无效 主要管理堆区中的对象的内存管理   3.内存管理的原理 1)对象所有权概念 任何对象都可以能拥有一个或多个所有者,只要一个对象至少还拥有一个所有者,他就会继续存在 cocoasu所有权策略 任何自

启动期间的内存管理之初始化过程概述----Linux内存管理(九)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDrivers Linux内存管理 在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_32上需要切换到保护模式, 然后内核才能检测到可用内存和寄存器. 而我们今天要讲的boot阶段就是系统初始化阶段使用的内存分配器. 1 前景回顾 1.1

iOS- 非ARC的项目内存管理细节详解(实战)

1.前言 接上文:iOS- 如何将非ARC的项目转换成ARC项目(实战) 2.内存管理时相关的配置 当我们把将非ARC的内存管理都管理好后,发现在做有些操作的时候内存还是在一直的缓慢增加 比如做一个最简单的随机数UITableView的显示与滑动,进行内存管理后,不应该出现内存增加的,但是一直滑动内存就一直缓慢的往上增加的情况. 这时候我们可以检查下看这里的属性是否打勾: 或者检测app一启动时控制台有没有立即输出下列这句话 如果勾上,上面三个选项,控制台就会出现下列几行输出 ARCTest(6

Objective-C:Objective-C 和 Core Foundation 对象相互转换的内存管理

Objective-C 和 Core Foundation 对象相互转换的内存管理 iOS允许Objective-C 和 Core Foundation 对象之间可以轻松的转换,拿 NSString 和 CFStringRef 来说,直接转换豪无压力: CFStringRef aCFString = (CFStringRef)aNSString; NSString *aNSString = (NSString *)aCFString; 针对内存管理问题,ARC 可以帮忙管理 Objective-

zzz Objective-C 和 Core Foundation 对象相互转换的内存管理总结

Objective-C 和 Core Foundation 对象相互转换的内存管理总结   iOS允许Objective-C 和 Core Foundation 对象之间可以轻松的转换,拿 NSString 和 CFStringRef 来说,直接转换豪无压力: CFStringRef aCFString = (CFStringRef)aNSString; NSString *aNSString = (NSString *)aCFString; 针对内存管理问题,ARC 可以帮忙管理 Object

Objuct-c 对象的初始化 存起器 属性 self和super 内存管理

对象初始化: -(id)init:万能类型,能返回各种对象,可能会导致类型错误. -(instancetype)init:当前类的类型(推荐大家选) if的判断语句中self是等于[super init]而不是判断,初始化失败的话就返回空 ,这时返回0给self自己,自己就变成空对象. 指定初始化方法 一般是参数最多的一种初始化方法: 其他初始化都直接间接调用指定初始化,出现错误以后可以直接从指定初始化中找出错误. 一个类需要一个指定初始化方法. 存取器方法: get的方法和实例变量同名. se

七.OC基础加强--1.内存管理 2.野指针,内存泄露 3.set方法的内存管理 [email protected]参数 [email protected]和循环retain的使用 6.NSString的内存管理

1,内存管理简单介绍 1,为什么要有内存管理? malloc selloc dealloc```需要回头复习 一般的内存 4s 是512m内存:6 是1024m内存: 当内存过大时,会耗尽内存.出现程序闪退. 2.OC内存管理的范围 : 管理任何继承NSObject的对象,对其他的基本数据类型无效. 3.对象类型是程序运行过程中动态分配的,存储在堆区:内存管理主要是对 堆区中的对象的内存管理. 4.OC内存管理的原理 为了防止内存泄露 对象的引用计数器 : 每个OC对象都有自己的引用计数器,是一

iOS中引用计数内存管理机制分析总结(NSString引用计数为-1的情况)

在 iOS 中引用计数是内存的管理方式,虽然在 iOS5 版本中,已经支持了自动引用计数管理模式,但理解它的运行方式有助于我们了解程序的运行原理,有助于 debug 程序.   操作系统的内存管理分成堆和栈. 在堆中分配的内存,都适用引用计数模式:在栈中则不是. NSString 定义的对象是保存在栈中,所以它没有引用计数,不是通过引用计数对内存进行管理的.之前我在一篇博客上看,说常量的引用计数会是一个很大的整数,测试的结果显示它是-1. 对该对象进行 retain 操作,不好改变它的 reta

内存管理初始化源码3:bootmem

start_kernel ——> setup_arch ——> arch_mem_init ——> bootmem_init ——> init_bootmem_node: 此时,不得不说的就是 bootmem . 1. 什么是bootmem: 我们都知道,所有的物理内存是交给内核管理的,或者说是交给内存管理子系统管理的.那么,从内核启动到内核管理子系统启动之间,是否需要内存呢?答案是肯定的,该时间段内是需要物理内存的. 那么bootmem就是负责该时间段的物理内存的分配. 2. 特