【发布时间】:2017-02-05 05:07:00
【问题描述】:
我在Objective-C中学习了手动内存管理,每篇文章都说:“当对象的保留计数降至0时,调用dealloc方法并销毁对象”。仅此而已。
但是有几个问题没有答案:我可以将保留计数降低到 0 以下吗?是否可以在对象死亡之前连续多次调用[object release],并导致保留计数降至 0 以下?如果我这样做了,宇宙还会存在吗?
Google 什么也没给我,比如:“你为什么要问这个问题?没人在乎。再去阅读一下内存管理。”
【问题讨论】:
-
尝试搜索“过度释放目标c”
-
其实我应该说的是:你尝试的时候发生了什么?您的问题很容易通过实验得到解答。
-
不,宇宙将不再存在。您将在某处崩溃 BAD_ACCESS。你自己没有试过吗?令人钦佩的是,您正在学习手动内存管理,它将帮助您从内部理解事物。但它非常不安全,在现代项目中不使用。
-
当前运行时(至少可以追溯到几个版本)永远不会将计数降至零。相反,当它减少到零时,它只是跳过该部分并调用
dealloc。查看众多问题,询问为什么retainCount报告 1 为dealloced 对象。
标签: objective-c memory-management release dealloc retaincount