黑马程序员技术交流社区

标题: 定义一个字符串对象,在手动管理内存时。用release吗? [打印本页]

作者: gaoxinglei123    时间: 2014-4-29 10:40
标题: 定义一个字符串对象,在手动管理内存时。用release吗?
本帖最后由 gaoxinglei123 于 2014-4-30 11:23 编辑

nsobject *obj=@"dhjhffffh"用手动执行release吗?
作者: 魅影穿眸    时间: 2014-4-29 10:51
不用,你这定义的是字符串对象,不需要release
作者: 杨勇    时间: 2014-4-29 10:51
在OC中虽然字符串也是对象,但字符串在oc中较特殊并不需要对其进行释放,即不需要[obj release];
可以理解为,这个字符串对象并不是通过alloc创建的,因此不需要对其引用计数器减1。
作者: Er01c    时间: 2014-4-29 10:52
内存管理黄金法则:
The basic rule to apple is everything that increases the reference counter with alloc,[mutable]copy[WithZone:] or retainis in charge of the corresponding [auto]release.
如果一个对象使用了alloc,[mutable]copy,retain,那么你必须使用相应的release或autonrelease
作者: 脸皮猴    时间: 2014-4-29 10:52
1、谁创建,谁release:有始有终!!

-如果你通过alloc、new或[mutable]copy来创建一个对象,那么你必须调用release或autorelease
-换句话说,不是你创建的,就不用你去[auto]release

2、谁retain,谁release
-只要你调用了retain,无论这个对象是如何生成的,你都要调用release

所以,你说的那种不需要自己管理

作者: gaoxinglei123    时间: 2014-4-29 13:42
脸皮猴 发表于 2014-4-29 10:52
1、谁创建,谁release:有始有终!!

-如果你通过alloc、new或[mutable]copy来创建一个对象,那么你必须 ...

哦。懂了。




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