Suj*_*jal 14 objective-c dealloc
在Objective C中创建自定义类时,该dealloc方法何时以及如何调用?这是我必须在课堂上以某种方式实现的吗?
PJR*_*PJR 17
您永远不会直接发送dealloc消息.相反,通过释放NSObject协议方法间接调用对象的dealloc方法(如果释放消息导致接收者的保留计数变为0).有关使用这些方法的更多详细信息,请参阅"内存管理编程指南".
子类必须实现它们自己的dealloc版本,以允许释放对象消耗的任何额外内存 - 例如动态分配的存储空间,用于解除分配对象拥有的数据或对象实例变量.在执行特定于类的释放后,子类方法应该通过消息将dealloc的超类版本合并到super:
重要说明:请注意,当应用程序终止时,可能不会向对象发送dealloc消息,因为进程的内存在退出时自动清除 - 仅仅允许操作系统清理资源比调用所有内存管理方法更有效.出于这个原因和其他原因,您不应该在dealloc中管理稀缺资源
- (void)release
{
_retainCount--;
if (_retainCount == 0) {
[self dealloc];
}
}
Run Code Online (Sandbox Code Playgroud)
想象一下,这-release是在NSObject中实现的,如下所示:
- (void)release
{
_retainCount--;
if (_retainCount == 0) {
[self dealloc]
}
}
Run Code Online (Sandbox Code Playgroud)
我确定它比这复杂一点,但你的问题的答案是,-dealloc当它的保留计数降到零时,对象本身会调用.但是,您的自定义类将从NSObject继承此行为.你永远不需要在你编写的代码中调用-dealloc; 当对象被正确释放时,它总是会自动发生.
| 归档时间: |
|
| 查看次数: |
8100 次 |
| 最近记录: |