MacDev 板


LINE

※ 引述《angelyin (等待.微笑)》之铭言: : ※ 引述《atst2 (atst2)》之铭言: : : 一般在dealloc内做的事情: : : - (void)dealloc : : { : : if(_A) { : : [_A release]; //这里要注意,要释放object内的变数,不可以用dealloc, : : //更明确一点,开发者应避免直接呼叫dealloc, : : //而是使用release代替。 : : } : : //....释放其他资源. : : [super dealloc]; : : } : 我在使用xcode建立专案时 : 我在AppDelegate.h里面看到他自动帮我建立了 : -(void)dealloc : { : [abc release]; : [super dealloc]; : } : dealloc是在reference count归零时 : 系统会自动呼叫的 : 那如果我删掉上述这几行 : 那dealloc还会有作用吗? : 如果有 : 那似乎就不需要写在程式了? : 还是有什麽情况是必须要写? : 有的时候可以不用写? : 不好意思 问题很多 ^^" : 谢谢各位 当你的class中有宣告变数,而且在执行过程中有生成变数实体时, 你就应该要覆写dealloc, 但你不应该主动去呼叫dealloc. 你可以去跑一下下面的实例,然後想想为什麽: 1. 实做一Class如下,只要写setter,和getter就好了 @interface MyObject: NSObject { NSObject *testObject; } - (void)setTestObject:(NSObject*)object; - (NSObject*)testObject; @end 2.执行下面程式码: //我附加了一下预期的结果,来说明一下这段code所要观察的现象及意义. NSObject * anObject = [NSObject new]; // ref count == 1 MyObject * myObject = [MyObject new]; [myObject setTestObject:anObject]; //此时 anObject ref count 应为 2 [myObject release]; //在1. 的情况下, 此时 anObject的ref count 仍旧为 2 //在3. 的情况下, 此时 anObject的ref count 则为 1 [anObject release]; //在1. 的情况下, ref count == 1, 但正常(即3. 的情形)来说, //我们预期其为 0, 且 anObject 不可再操作. //这就是一个新手常见的memory leak的成因. 然後,观察一下anObject的reference count 是如何变化的. 3. 在MyObject中,照之前文章,覆写dealloc如下 - (void)dealloc { if(testObject) [testObject release]; [super dealloc]; } 现在,再执行2的程式码,并观察一下anObject的reference count. 这整个流程跑过後,你应该会比较清楚差异在那里。 -- 应该啦.... -- 反正不了解就再问吧 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.73.154 ※ 编辑: atst2 来自: 118.168.73.154 (07/18 23:57)
1F:推 angelyin:请问有什麽方法可以观察ref count?除了printf印出来XD 07/20 21:41
2F:→ angelyin:因为count = 0再印程式就当了也看不到了 07/20 21:42
3F:→ atst2:上面例子是要观察anObject的ref count,照理说最後结果是1 07/21 16:45
4F:→ atst2:你是不是弄成myObject了? 07/21 16:45
5F:→ atst2:真的要确认是否count有照着跑到0,有个做法是在前後再加 07/21 16:46
6F:→ atst2:一个retain-release pair,去观察ref count是否为1,来替代. 07/21 16:47
7F:→ atst2:再不然就是用DebugMalloc之类的工具去看有没有leak. 07/21 16:47
※ 编辑: atst2 来自: 118.168.74.173 (07/21 16:57)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP