美文网首页
NSString字符串创建时的注意点

NSString字符串创建时的注意点

作者: FunkyRay | 来源:发表于2017-09-05 10:52 被阅读2次

通过不同的方式创建字符串,字符串对象的存储位置不同

  • 如果是通过字符串常量创建,那么字符串对象存储在常量区中
  • 如果是通过alloc initWithFormat/stringWithFormat创建,那么字符串对象存储在堆区中
//1.通过字符串常量创建
//注意:如果是通过字符串常量创建对象,并且字符串常量的内容一致,那么如果创建多个字符串对象,多个对象指向同一块存储空间
NSString *str1 = @"lnj";
NSString *str12 = @"lnj";

//2.通过alloc init创建
//只要调用alloc就会在堆内存中开辟一块存储空间
NSString *str2 = [[NSString alloc]initWithFormat:@"lmj"];
NSString *str22 = [[NSString alloc]initWithFormat:@"lmj"];
    
//3.通过类工厂方法创建/ stringWithFormat
//内部其实就是封装了alloc init
NSString *str3 = [NSString stringWithFormat:@"zs"];
NSString *str33= [NSString stringWithFormat:@"zs"];

注意点

  • 不同的平台存储的方式也不一样,如果是Mac平台系统会自动对字符串对象进行优化,但是如果是iOS平台就是两个对象
  • 不同的编译器存储的方式也不一样,如果是Xcode6以下并且是在iOS平台,那么每次alloc都会创建一个新的对象,如果是在Xcode6以上那么alloc多次指向同一块存储空间
  • 一般情况下,只要是通过alloc或者类工厂方法创建的对象,每次都会在堆内存中开辟一块新的存储空间;
    但是如果是通过allocinitWithString方法除外,因为这个方法是通过copy返回一个浅拷贝的字符串对象给我们,所以不会产生一个新的对象
NSString *str4 = [[NSString alloc]initWithString:@"ls"];
NSString *str44 = [[NSString alloc]initWithString:@"ls"];

相关文章

  • NSString字符串创建时的注意点

    通过不同的方式创建字符串,字符串对象的存储位置不同 如果是通过字符串常量创建,那么字符串对象存储在常量区中 如果是...

  • NSString的一些使用方法

    //创建字符串 NSString *str0 = [[NSString alloc]init]; //将字符串创建...

  • NSString

    NSString:可以保存字符串。 创建NSString实例: NSString *lament = @"Why ...

  • NSString 方法

    NSString方法 创建字符串对象时,会创建一个内容不可更改的对象,成为不可改变对象。可以用 NSString ...

  • NSString 个人理解的用法

    一、NSString 创建字符串 1、NSString *astring = @"This is a String...

  • NSString和NSMutableString 使用

    一、NSString 1、创建常量字符串。 NSString *string = @"hello world"; ...

  • IOS基础:Objective-C 字符串处理

    //一、NSString /*----------------创建字符串的方法----------------*/...

  • Swift字符串

    字符串简介在OC中定义字符串 @"". Swift中用""(注意点:OC中的字符串是NSString,Swift...

  • iOS字符串的简单使用

    OC字符串 字符串的创建 1.字面量创建 NSString *str = @"hello";NSLog(@"%@"...

  • NSString字符串 - OC

    创建字符串的4种方法 NSString字符串长度计算(length方法) NSString字符串:取出对应位置的字...

网友评论

      本文标题:NSString字符串创建时的注意点

      本文链接:https://www.haomeiwen.com/subject/oaqujxtx.html