释放未分配且没有任何错误的对象

时间:2011-11-21 17:22:37

标签: objective-c memory-management

我发现在我的代码中我发布了从未分配过的对象,我没有收到任何错误。该应用程序不会崩溃。一切正常。我用的是产品 - >分析并告诉我一切都很好。

我曾经认为发布未分配的对象导致应用程序崩溃。所以我的问题是 - 当没有分配对象被释放时程序崩溃(即我错过了我的代码中必不可少的东西导致这样的行为)或者一切都按预期运行?

2 个答案:

答案 0 :(得分:2)

这完全取决于指向“未分配”对象的指针是否为nil。在Objective-C中,发送给nil的消息不执行任何操作。应用程序崩溃是由向悬空指针(或垃圾指针等)发送消息引起的。

答案 1 :(得分:1)

如果尚未为对象分配内存,则对象指向nil。当你打电话

[myobj release]

你真的发送消息发布到一个零对象。在这种情况下,Obj-C不做任何事情,这就是你的应用程序不会崩溃的原因。