stringwithformat_oc stringwithformat_stringwithformat ld

电脑杂谈  发布时间:2017-02-07 04:11:16  来源:网络整理

NSSting的对象在使用@"xx"直接初始化赋值时,它会在内存"stack segment"中分配一个空间,用于保存该变量。stringwithformat

相同赋值的对象,会采用相同的内存空间,表现为内存地址相同。stringwithformat

可以理解为NSString的isa的值是一样的。

NSString *str2=@"e中国2";

NSString *str3=@"e中国2";

//%p for pointers to show the memory address

NSLog(@"str2'addr is %p str3'addr is %p",str2,str3);

if (str2 == str3)

{

NSLog(@"str2'pointer = str3's");

}

if ([str2 isEqualToString:str3])

{

NSLog(@"str2'content = str3's");

}

使用stringWithFormat:工厂方法初始化NSString对象时,每次都独立分配内存空间。

我怀疑这个空间是在heap segment中,而不是stack segment中。

即使相同内容的NSString对象,通过%d获取的对象的内存地址的值不一致。

NSString *str2=[NSString stringWithFormat:@"e中国%i",2];

NSString *str3=[NSString stringWithFormat:@"e中国%i",2];

//%p for pointers to show the memory address

NSLog(@"str2'addr is %p str3'addr is %p",str2,str3);

if (str2 == str3)

{

NSLog(@"str2'pointer = str3's");

}

if ([str2 isEqualToString:str3])

{

NSLog(@"str2'content = str3's");

}

NSString的比较方法,比较内容应该是isEqualToString:,比较指针的是==比较符号。通常情况下,你需要比较的都会是内容本身而不是其指针值。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-31006-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 完颜永济
        完颜永济

        所以盲目乐观要倒霉

      热点图片
      拼命载入中...