黑马程序员技术交流社区

标题: 请大神分享@property (retain) NNString *name的问题 [打印本页]

作者: WELL--V    时间: 2014-12-25 11:07
标题: 请大神分享@property (retain) NNString *name的问题
@property (retain) NNString *name
NNString *s = "jack";
stu.name = s;
不是没有用alloc吗?第一行用retain不就用到release了吗?
虽然它是NNString类型的对象,MJ老师不是说它会自动回收的吗?
我晕了,请大家指教。谢谢。
作者: zhuohong_xiao    时间: 2014-12-25 12:27
NSSting是一个autorelease的对象吗?
作者: 从今以后    时间: 2014-12-25 13:44
NSString *s = "jack";这种常量字符串比较特殊,内存分布不同,类似于C的char *str = "jack";。
[s retainCount]是一个很大的数,而不是1。
相应的_name = [s retain];也并不会让s引用技术+1,而是依旧保持一个很大的数。
两个字符串指向同一常量字符串。

NSString *str = @"jack";
NSString *s = [NSString stringWithFormat:@"%@", str];
这样的s引用计数才是1,而且和常量字符串str是完全不同的内存地址。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2