为啥这里就可以用str1==str2

为啥这里就可以用str1==str2

NSString *str2=@"abc";

        NSString *str3=@"abc";

        if (str2==str3) {

            NSLog(@"Yes");

        }

他们内容一样,但是地址应该不一样啊,为什么还是可以输出yes?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
axiba 2018-08-11 10:49:46

用您上面这种方式创建的字符串,如果内容相同,那么内存地址也相同,这个是oc语言的一个设计,为了节省内存空间。

Tender10 2017-04-06 22:55:39

你可以通过%p来打印str2和str3的地址,看一下他们的地址是否相同。

  • 提问者 St711 #1
    “==”不是表示两个对象内存地址和内容都相等才执行吗?
    2017-04-06 23:44:49
  • 提问者 St711 #2
    ==:表示两个对象内存地址和内容都相等 isEqualToString:表示内容相等
    2017-04-06 23:46:14
  • Tender10 回复 提问者 St711 #3
    你去用%p打印一下str2和str3的地址,能输出YES,说明两者的地址也是相同的。打印出两者的地址就能看出来。
    2017-04-07 09:26:40
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
iOS入门:基础语法与常用控件
  • 参与学习       1337    人
  • 提交作业       712    份
  • 解答问题       1878    个

很多人都在疑问没有基础该怎么学习iOS开发?不用担心,本路径采用游戏关卡式的教学模式,并且以经典OC与最新Swift双重结合的教学内容,帮助大家快速掌握两种iOS开发语言基础,去掉“零”标签。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师