2010-08-17 166 views
0

我是Objective-C的新手,目前正在开发一个小应用程序。removeFromSuperview和内存管理

我有一些内存管理问题,想问这个问题。我有一个按钮,我正在改变其外观:

for (UIView *subview in button.subviews) 
{ 
if (![subview isKindOfClass:[UIImageView class]]) // don't remove UIImageView, otherwise it will not be able to set background 
    { 
     [subview removeFromSuperview]; 
    } 
} 
[button setBackgroundImage: [[imageArray objectAtIndex:itemNumber] forState:UIControlStateNormal]; 
/* 
    creating myView and myLabel here 
*/ 
[button addSubview:myView]; 
[button addSubview:myLabel]; 
[myLabel release]; 
[myView release]; 

该代码实际上更复杂,但没有任何泄漏。尽管如此,每当我这样做时,分配的对象和已用内存的数量仍在不断增长。我怎么解决这个问题?

非常感谢你

+0

看起来像你的问题是与创建的标签。剩下的其实看起来不错... – 2010-08-17 13:46:17

+0

有什么问题可以在那里?我在代码中创建标签,从数组中为它分配一些文本(不要为它创建任何对象),然后释放标签。我认为[子视图removeFromSuperview]运行时将这些数据保存在内存中,我无法做任何事情(((( – Burjua 2010-08-17 14:01:12

回答

1

你是怎么测量的?用仪器?你是否检查'对象还活着'还是你测量分配的内存/对象?它们是有区别的。

+0

是的,我使用仪器和检查活着的对象和内存。它看起来像对象的数量仍然,但是内存的数量正在增加 – Burjua 2010-08-17 16:07:57