0

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

谢谢!

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

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

这是我用来释放它的代码

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

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

4

1 回答 1

1

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

至于 NSView 的删除,removeFromSuperview确实会释放接收器(被删除的视图),这就是为什么 Apple 文档NSView会告诉retain它,如果以后仍然需要它。

在声明、实例化、添加然后删除的地方发布代码将有助于获得更具体的答案。

于 2012-08-31T17:58:40.763 回答