A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雪冬 中级黑马   /  2014-4-15 09:18  /  1222 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由  王雪冬 于 2014-4-15 10:34 编辑

例如下面的代码:
  1. int main
  2. {
  3.         NSMutableString *s1=[NSMutableString stringWithFormat:@"my age is 10"];

  4.         [s1 appendString:@" my name is jack"]
  5. }
复制代码

代码中,定义了一个可变字符串变量 s1    ,加入他的地址是  00fe11,在创建时,内存中的值为:my age is 10


当执行完第二行时,s1追加上了 my name is jack。


我想问的是,当更改值时,内存中是直接在  00fe11  地址哪里直接修改 为:my age is 10 my name is jack


还是另开辟一段空间 ,例如:00fe22  来存储 my age is 10 my name is jack    ,请问是那种?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
可变字符串,顾名思义。就是可以改变的。。每次返回它本身,所以是你说的第一条,直接在oofe11中直接改变字符串内容,不创建新的内存地址

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 微尘•逐梦 于 2014-4-15 10:33 编辑

抱歉,我发现我的回答不正确,所以把回帖内容删了。
回复 使用道具 举报
可以这样理解 :[s1 appendString:@" my name is jack"] 这个方法是没有返回值(void),说明是直接在源对象的基础上,操作的,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马