我们老师教 OC,今天说内存管理,他把 NSString 的成员变量在 dealloc 里释放了

2015-04-23 09:16:19 +08:00
 lisonfan

_name 是 Person里NSString的成员变量
然后他 property NSString 传 retain
他是写错了吧?。。。。

6889 次点击
所在节点    iDev
47 条回复
Elethom
2015-04-23 10:42:16 +08:00
真無語。別上這個課了,去看 CS193P 吧。
arkilis
2015-04-23 10:49:54 +08:00
一切iOS开发不说明版本都是耍流氓.
lisonfan
2015-04-23 11:00:50 +08:00
@wangccddaa 首先感谢您打了这么多字回答我的疑问,我也都看完了,您在第三点最后一段提到的在dealloc打印string的retainCount,我刚刚试了一下,没有在dealloc添加name release,然后直接打印name retainCount ,打印出来的值为-1
fannheyward
2015-04-23 11:04:25 +08:00
歪个楼:不要通过 retainCount 做内存判断 http://whentouseretaincount.com/
lisonfan
2015-04-23 11:05:37 +08:00
@wangccddaa 给您看看代码吧。
main.m:


Person.h:


Person.m:


Dog.h:


Dog.m:


执行结果:
wezzard
2015-04-23 11:06:12 +08:00
Your tutor is right. There is a best practice in MRC and that is what your tutor shown.
ianisme
2015-04-23 11:13:51 +08:00
我了个大曹 怎么又是人狗。。。
lisonfan
2015-04-23 11:18:22 +08:00
@ianisme 0.0教学一般不都是人狗,人学生,云云的。。
robertlyc
2015-04-23 14:39:07 +08:00
快 4-5年没见到过这种写法了
ybh37
2015-04-23 14:45:08 +08:00
为什么不是 swift
lisonfan
2015-04-23 14:45:59 +08:00
@ybh37 老师太差
exherb
2015-04-23 14:51:15 +08:00
enable ARC please...
finian
2015-04-23 15:25:02 +08:00
popo233
2015-04-23 17:54:26 +08:00
看到 tz 菊花一紧 之前接手一个项目里面的变量都是这么命名的..
ashong
2015-04-23 18:26:59 +08:00
没错
lisonfan
2015-04-23 18:50:49 +08:00
@popo233 哈哈,命名的时候一下忘记了Weight
chisj
2015-04-23 19:58:54 +08:00
看到上面还有说直接=nil的,看来MRC懂的人也不多啊,哈哈。
sallowdish
2015-04-24 07:28:44 +08:00
看到release下意识看了眼发帖时间,虽然本人也是ARC开始学的
joshua7v
2015-04-24 07:57:20 +08:00
虚心点 多学学总是好的... 你觉得他菜,你可以写的比他好鄙视他,前提是你写的比他好。。
@chisj 人家是用self.name=nil MRC没有问题的
itobeen
2015-04-24 08:28:26 +08:00
@joshua7v 没释放就置空貌似有点不妥吧。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/185640

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX