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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小郑 中级黑马   /  2015-7-9 07:51  /  1068 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

NSString * s= [NSString new];
s=“abc”
NSString *s2 = @"abc";


两种声明方法有什么区别吗

点评

路过。。。  发表于 2015-7-9 08:32

5 个回复

倒序浏览
应该是s=@“abc”吧????
回复 使用道具 举报
zlc 发表于 2015-7-9 09:01
应该是s=@“abc”吧????

嗯   就是打的时候掉了   
回复 使用道具 举报
数据在内存中存放的位置不一样,用new申请的是堆内存,该区域内存如果不用了要手机释放,而你的第二种方法是用的静态内存,如果该内存不用了系统会自己回收。
回复 使用道具 举报
我的理解是:
在ARC环境下,应该没区别把
在非ARC环境下,不能直接写new,分开先alloc再init,需要做一次release操作或者autorelease操作,
而NSString *s2 = @“123”这种方式,s2就是已经经过autorelease的了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马