新手求解两种NSString赋值的区别 NSString *a = @"something";NSString *b = [[NSString alloc] initWithFromat:@"something"];NSLog(@"%d",[a retainCount]);NSLog(@"%d",[b retainCount]);请问上面两种赋值方式的具体区别;以及为何第一个数字非常大,新手再次真心感谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个是常量,objective-c基础书上有将 第一种应该是autorelease,第二种是要手动释放内存的 NSString是对象类型,说它是常量并不正确,而2楼的说法很正确,因为字符串实例“a”是系统完成的初始化,所以返回时带上了AutoRelease(自动释放池机制),而字符串实例“b”是手动实例化并赋初值,够其引用基数加1。 如果你要试验retain count,请不要拿NSString来做测试。 凡是没有明确写Alloc创建的对象都是Autorelease对象。 是这样的。第一种,系统会默认为autorelease,帮你释放掉它 第二种,则是自己去释放 常量字符串的引用计数值是0x7fffffff,这表示它是永不释放的. object-c 解析xml。格老子的。 objectiv-c表达式有没有序列点,副作用? Iphone UIScrollView 的缩放问 xcode中代码覆盖率统计 关于如何关闭键盘的小问题 ios里如何手动更改静态表单元的大小和位置 求助~~xcode上可以编译使用到了linux api的程序吗? 关于ios的无线部署安装 xcode6 如何制作ipa越狱包? 编译build-ffmpeg.sh时出现如下报错,请求指点 请问snow leopard系统需要那个版本的xcode和sdk? 请教一个比较基础的声明语法问题
NSString是对象类型,说它是常量并不正确,而2楼的说法很正确,因为字符串实例“a”是系统完成的初始化,所以返回时带上了AutoRelease(自动释放池机制),而字符串实例“b”是手动实例化并赋初值,够其引用基数加1。
是这样的。第一种,系统会默认为autorelease,帮你释放掉它 第二种,则是自己去释放