是否有必要将对象归零?

Posted

技术标签:

【中文标题】是否有必要将对象归零?【英文标题】:Is it necessary to nil the object? 【发布时间】:2012-05-14 12:07:03 【问题描述】:

我有一个 UIWebView 的视图控制器子类。如果我释放该对象,是否有必要将该对象归零? 谢谢。

【问题讨论】:

【参考方案1】:

这取决于您如何使用指向UIWebView 子类的指针。如果这个releasedealloc中,那么你不需要将它设置为nil,但是如果你在其他地方release它,我会将它设置为nil

【讨论】:

它在 loadView 那我该怎么办? @ohmprakash 正如我所说,如果您在dealloc 之外发布它,我会将指针设置为nil 但是,如果我没有将对象设为 nil,那么该应用程序就会崩溃。 可能存在对该对象的强引用,根据苹果的说法,即使是与其他对象有字符串关联的对象也只有在其他关联对象也被释放时才会被释放。【参考方案2】:

如果你已经释放它,它不会绑定到 nil 对象,如果你正在释放意味着你没有使用 ARC。简单地释放对象意味着它的计数在某些情况下减少 1 或零,但你仍然可以对其执行操作,但结果什么都没有。(编译器不给出错误消息)。

nil 确保从该对象到其他对象的所有引用都得到补偿或为零。(一种良好的编程习惯)。

【讨论】:

【参考方案3】:

不,没有必要。但是将对象设置为 nil 是一个很好的做法,因为它会删除对 nil 的引用并且消息会被忽略。

【讨论】:

以上是关于是否有必要将对象归零?的主要内容,如果未能解决你的问题,请参考以下文章

将指针传递给保证归零的内存

如何快速将数组归零?

如果 QThread 的完成信号连接到 deleteLater,是不是有必要删除在 QThread 上运行的对象?

关于java内存优化和性能优化

将 JSON 对象转换为特定类型

检测到自动释放对象