OC中创建字符串的几种方法及Xcode7.3中其存储内存地址的异同
来源:互联网 发布:js判断上传文件的类型 编辑:程序博客网 时间:2024/05/01 01:31
OC语言中创建字符串的主要方法包括:
- 1.通过字符串常量直接创建:
NSString *str1 = @"xjq";
该方法是直接在常量存储区开辟一块内存空间用于字符串的存储,str1为该存储空间的地址。
- 2.通过alloc与initWithFormat创建:
NSString *str2 = [[NSString alloc] initWithFormat:@"xjq"];
该方法在堆内存中开辟一块存储空间,str2为该存储空间的地址。
- 3.通过alloc与initWithString创建:
NSString *str3 = [[NSString alloc] initWithString:@"xjq"];
创建一个具有只读数据的常量字符串,与“1.通过字符串常量直接创建”相同。事实上Xcode7.3编译器中,如果使用了alloc + initWithString方法,会显示提示,建议修改为字符串常量创建。
- 4.通过类工厂方法:stringWithFormat创建:
NSString *str4 = [NSString stringWithFormat:@"xjq"];
类工厂方法内部封装了alloc init方法,与2.通过alloc与initWithFormat创建相同。
对相同数据的储存:
对于Xcode7.3,不管是在OS X工程还是iOS工程中,借由编译器自身的优化,若在常量存储空间或堆存储空间内存储同一组字符串,Xcode会将指针指定同一个地址,减少系统占用。
//1.通过字符串常量创建对象 NSString *str1 = @"xjq"; NSString *str11 = @"xjq"; NSLog(@"*str1的内存地址为%p,*str11的内存地址为%p",str1,str11); //2.通过alloc与initWithFormat创建 NSString *str2 = [[NSString alloc] initWithFormat:@"xjq"]; NSString *str22 =[[NSString alloc] initWithFormat:@"xjq"]; NSLog(@"*str2的内存地址为%p,*str22的内存地址为%p",str2,str22); //3.通过alloc与initWithString创建 NSString *str3 = [[NSString alloc] initWithString:@"xjq"]; NSString *str33 =[[NSString alloc] initWithString:@"xjq"]; NSLog(@"*str3的内存地址为%p,*str33的内存地址为%p",str3,str33); //4.通过类工厂方法:stringWithFormat创建 NSString *str4 = [NSString stringWithFormat:@"xjq"]; NSString *str44 =[NSString stringWithFormat:@"xjq"]; NSLog(@"*str4的内存地址为%p,*str44的内存地址为%p",str4,str44);
以上代码输出为:
2016-04-12 12:32:39.761 字符串[3473:3719979] *str1的内存地址为0x100001048,*str11的内存地址为0x1000010482016-04-12 12:32:39.762 字符串[3473:3719979] *str2的内存地址为0x716a7835,*str22的内存地址为0x716a78352016-04-12 12:32:39.762 字符串[3473:3719979] *str3的内存地址为0x100001048,*str33的内存地址为0x1000010482016-04-12 12:32:39.762 字符串[3473:3719979] *str4的内存地址为0x716a7835,*str44的内存地址为0x716a7835Program ended with exit code: 0
0 0
- OC中创建字符串的几种方法及Xcode7.3中其存储内存地址的异同
- OC基础—关于不同字符串创建方法创建的字符串的存储地址的研究
- OC中load方法和initialize方法的异同
- C中字符串的几种定义方法及说明
- C中字符串的几种定义方法及说明
- C中字符串的几种定义方法及说明
- javascript几种方法创建function对象的异同
- OC中获取系相应目录的几种方法
- OC中对数组排序的几种方法
- OC中多线程的创建方法
- OC中字符串的方法测试
- 创建多线程的方法 以及 几种创建多线程方法的异同点
- C++中地址和引用的异同
- Java中去除字符串中空格的几种方法
- Java中去除字符串中空格的几种方法
- Windows中获取MAC地址的几种方法
- redhat中设置ip地址的几种方法
- Windows中获取MAC地址的几种方法
- 解决ie6下position:absolute不兼容问题
- Samza使用入门
- 富爸爸 年轻退休
- 【js】Ajax提交form表单(ajaxSubmit使用讲解 )
- 函数调用中堆栈
- OC中创建字符串的几种方法及Xcode7.3中其存储内存地址的异同
- Xcode各版本官方下载
- android as2.0 播放器源码 支持 4.2+ 系统
- jsp(2)
- ajaxFileUpload 异步上传文件简单使用
- js与Android交互之js调用Android中的方法
- 广度优先算法最短路径问题 Dijkstra算法
- iOS开发之---static关键词详解
- Windows Server 2008远程桌面端口更改方法