从SuperView中删除对象但仍分配了内存? (弧)

时间:2012-08-31 17:34:14

标签: objective-c macos automatic-ref-counting

我的应用程序的内存管理存在一些问题。我分配了一个NSView类并将其放在我的一个Windows上。过了一段时间,我从superview中删除了对象,然后将另一个对象放在它的位置。我遇到的问题是,当我删除它时,内存不会被释放。它继续保持与之前相同的内存,如果我添加更多的类,它将继续堆积在内存中。我的问题是,删除该对象是否会删除该类所持有的所有对象,或者即使在删除该对象后仍会保留一些指针?如有必要,我可以发布代码。

谢谢!

编辑: 这是我用来分配它的代码

MyClass *theClass1 = [[MyClass alloc] initWithFrame:frameRect];
[self.window.contentView addSubview:theClass1];

这是我用来解除分配的代码

[[self.window.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];

我在计时器上创建它,每分钟更新一次。我没有在其他地方引用它。

1 个答案:

答案 0 :(得分:1)

对于每个类的实例,应分别处理每个对象的内存。删除一个实例不应该影响其他实例的分配(除非您有一些自定义代码查找该类的其他实例)。

对于NSView的删除,removeFromSuperview确实会释放接收者(视图被删除),这就是为什么Apple文档NSViewretain说“如果仍需要它”后面。

发布声明,实例化,添加,然后删除的代码将有助于更具体的答案。