Objective-C 内存管理的问题(关于NSString)

在OC程序中,NSString*name=@"zhangsan";这么去定义的时候,后面name这个对象还需要release么?如果NSString*fullname=[... 在OC程序中, NSString* name = @"zhangsan";这么去定义的时候,后面 name这个对象还需要release么?

如果NSString * fullname = [NSString initWithFormat:@"%@ %@",firstname,secondname];这么定义一个NSString对象,后面需要release,程序能够自动释放内存么
展开
 我来答
xpsuperman174
推荐于2016-06-24 · TA获得超过2862个赞
知道小有建树答主
回答量:884
采纳率:0%
帮助的人:1240万
展开全部
NSString* name = @"zhangsan"去定义,属于常量类型,程序会把这部分数据放到全局变量存储区,你不用释放,你也释放不掉,不信你可以release以后再查看它的retainCount;
[[NSString alloc] ] initWithFormat:@"%@ %@",firstname,secondname];这种类型的需要释放,因为alloc过了,程序需要手动用release释放,你写的那种方法不正确,没有直接init的。
[NSString stringWithFormat:@"%@ %@",firstname,secondname];这种类型生成的NSString是autorelease类型的变量,不需要释放,程序一次runLoop结束后就会释放。你不能用release释放。
宇少2583
2014-01-06 · 超过14用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:28万
展开全部
内存管理原则是谁用谁释放!建议你学习一下对象的引用计数这一块
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式