objective-c - 为什么 Objective-c 运行时不将 dealloc 的对象实例设置为 nil?

标签 objective-c memory-management runtime

有时我在释放对象后将对象设置为nil,以避免由于发送到dealloc 对象的意外消息而导致崩溃。

为什么 Objective-c 运行时不在对象最终dealloc自动执行此操作?

最佳答案

因为指针是按值传递的,而不是按引用传递的。所有 dealloc 获取的都是指针的本地副本;它所做的任何更改都将被丢弃。 C 的 free 和 C++ 的 delete 也是如此。

关于objective-c - 为什么 Objective-c 运行时不将 dealloc 的对象实例设置为 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573081/

相关文章:

iphone - iOS -- 如何保存应用内购买数据?

ios - 将 DatePicker 日期转换为 UTC 格式返回 NULL

memory-management - 如何测量 Julia 中一小部分代码的内存使用情况?

objective-c - 如何在运行时删除 Objective-C 2.0 中的实例方法?

java - 在 Java 中多次运行命令行程序 - 这是正确的吗?

c++ - 列表迭代器不可取消引用运行时

ios - 在应用于单元格之前未设置自定义 Collection View 布局属性

ios - sigsegv segv_accerr 在 ios7 中使 mkmapview 崩溃

c++ - 什么可以解释调用 free() 时的堆损坏?

java - 如何确定 Java 中的 Activity 内存使用情况