楼主:
darktt (小朱)
2014-04-16 05:58:04iOS 的内存的回收机制并不是你在程式中写 Release 就会马上释放的,
而是要到垃圾回收机制 (garbage collection) 开始的时候才会回收
Retain count 是 0 的物件。
所以在 ViewController 切换的时候内存使用量会短暂的增加都是正常的,
而且在 iOS 中 ViewController 切换之后,上一个画面的 ViewController
并不会被 Release,会保留在内存中直到它被 dismiss 之后才会被释放,
如果这层 ViewController 是第一层的话那就永远不会被释放掉了。
其实ARC跟GC是有差别的,应该说Apple现在放弃用GC的机制回头用Ref Counter,但是用PreProcessing帮你加上retainrelease,而检查释放的时机,则是run loop结束的时候
作者:
atst2 (atst2)
2014-04-16 08:30:00正确的来讲,释放的时机是autorelease pool结束时而autorelease pool默认只有一个,要自己控制时机得自己加@autorelease 区块(arc)
作者:
ishuen (小小宇)
2014-04-16 08:37:00所以设定为nil也不会马上释放吗?如果只有一个reference的话?
RefCount降到0也不会马上删除,必须等autorelease pool要删除的时候才会一起检查,一起删除
作者:
HuangJC (吹笛牧童)
2014-04-16 19:24:00但我还真看不出我的程式可以在哪加 @autorelease虽然是第一个画面唤起第二个画面,第二个画面 close退回第一个画面;但进入及退出却不是口袋型的,code没有明确的堆叠那我就找不到一个地方去加 @autorelease当初在书上读到 autorelease 还觉得很酷咧,感觉很方便
作者:
Decill (inner peace)
2014-09-17 14:44:00一楼我知道是输入法问题 不过我还是忍不住笑了