美文网首页
iOS中字符串的 == 和isEqualToString

iOS中字符串的 == 和isEqualToString

作者: CN_HarrySun | 来源:发表于2018-07-06 17:24 被阅读79次
NSString *str1 = @"12345";    // 存储常量区
NSString *str2 = @"12345";    // 存储常量区

NSLog(@"str1和str2地址:%p -- %p", str1,str2);
NSLog(@"%d",str1 == str2);
NSLog(@"%d", [str1 isEqualToString:str2]);

NSString *str3 = [NSString stringWithFormat:@"12345"];    // 存储堆区
NSString *str4 = [NSString stringWithFormat:@"12345"];    // 存储堆区

NSLog(@"str3和str4地址:%p -- %p", str3,str4);
NSLog(@"%d",str3 == str4);
NSLog(@"%d", [str3 isEqualToString:str4]);

结果都输出 true

str1和str2地址:0x10986c068 -- 0x10986c068
true
true
str3和str4地址:0xa000035343332315 -- 0xa000035343332315
true
true

按理说,创建的两个字符串的地址是不相同的,但是系统在短时间内创建相同的字符串,会使用上次创建的字符串,不会再开辟新的地址。(代码区给字符串开辟空间,相同的字符串不会开辟新的空间)

相关文章

网友评论

      本文标题:iOS中字符串的 == 和isEqualToString

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