我有一个单例对象obj1,有一个名为 Objects 的 NSMutableArray 成员
我添加了一个名为 NSObject(注册)
的类别@implementation NSObject (Register)
-(id)init
{
[[obj1 defaultObject] addObjectToView:self];
return self;
}
@end
addObjectToView 方法只需将对象添加到数组
即可-(void)addObjectToView:(id)object
{
[object retain];
[Objects addObject:object];
}
( Object 是NSMutableArray)
问题是,当我试图测试它时,我做了
NSWindow *window = [[NSWindow alloc] init];
然后我在数组中得到了505个可怕的对象,
我做错了吗?
顺便说一句,可以管理所有对象的关系并发送隔离对象 dealloc 消息来实现Objective-C中的垃圾收集器吗?答案 0 :(得分:0)
不要那样做!
这会捕获几乎所有创建的对象并阻止它们被释放。实际上,甚至两次手动保留它们然后将它们添加到可变数组中也保留它们。
此外,您无法覆盖类别中的方法。它排序确实有效,但是只要有第二个类别覆盖同一个方法,它就会被定义为实际使用哪一个。
在其上实现垃圾收集器也不会起作用。你也不想要垃圾收集器。 Apple过去常常提供一个,但现在已弃用,将被删除。你也不需要它 - 使用ARC。