【发布时间】:2011-05-11 06:19:01
【问题描述】:
有没有办法在释放任何 NSObject 类对象之前调用方法。
或
是否可以为 NSObject 类编写自定义 dealloc 方法,以便
我们可以在释放该对象之前调用任何方法吗?
由于垃圾收集器不适用于 iPhone,我想创建一个小型框架,在运行时处理内存泄漏并为泄漏创建日志文件(我知道有工具可以识别泄漏,但仍然用于研发,但不想要实现垃圾收集器算法)。
我们正在尝试维护已分配对象的列表。
例如:
A *a=[[A alloc]init];
NSString * veribaleAddress=[NSString stringWithFormat:@"%p",&a];
NSString *allocatedMemoryAddress=[NSString stringWithFormat:@"%p",a];
// Global dictionary for maintaining a list of object NSMutableDictionary *objects;
[objects setValue: allocatedMemoryAddress forKey: veribaleAddress];
但是当任何对象被解除分配时,我想第一次查看该对象的地址是否存在于字典中。如果地址存在,则将其从字典中删除。
请指导我,是否可能。
谢谢
【问题讨论】:
-
如果你告诉我们你想要完成什么,你会得到更好的答案。
-
您可能可以调配
-[NSObject dealloc],但这通常是一个坏主意™。你到底想完成什么? -
我不确定我是否理解正确。你想在dealloc中还是在dealloc之前调用一个方法。我想您知道您从不直接发送 dealloc 消息。而是通过释放 NSObject 协议方法间接调用对象的 dealloc 方法(如果释放消息导致接收者的保留计数变为 0)
-
大家好,我再次编辑我的问题。请检查一下。
-
a) 你不应该这样做 b) 如果你仍然相信这是值得的,你的实现将需要重新设计 c) 你不应该这样做
标签: iphone objective-c cocoa-touch cocoa