【发布时间】:2014-01-28 08:25:41
【问题描述】:
来自java背景,一切都在空指针异常下,我发现在理解objective-c中nil和deallocated实例之间的区别时有些困难。
在 Objective-c 中,众所周知,向 nil 对象发送消息不会对程序流产生任何影响。
但是,向解除分配的对象发送消息会导致向解除分配的实例发送消息错误。
在我的理想世界中,释放的实例是“nil”,但显然不是。
确切的问题是:
- 对象被释放后会发生什么?
- 如果对象被释放,不应该释放它,然后变成nil吗?
【问题讨论】:
-
"对象被释放后会发生什么?" - 没有。当某些东西被释放时,它就不再存在了。 “如果对象被释放,不应该被释放,然后变成nil吗?” - 它应该使用安全的语言。但它不在Objective-C中。
nil与释放的对象无关。nil是一个占位符,表示“没有对象”。 -
'it doesn't in objective-c' 是什么意思?如果没有释放,那还有什么?
-
它被释放了。不过,它并没有自动设置为
nil。 -
嗯,很高兴您能就该主题提供完整的答案。
标签: objective-c memory-management