dealloc似乎没有释放所有图像内存

时间:2012-05-16 14:36:00

标签: objective-c ios memory memory-management allocation

我正在制作的应用程序一直遇到“内存警告”,并最终崩溃。在我创建的自定义视图控制器类上调用release时,似乎没有释放内存,其视图已添加为子视图。

以下是我的情况示例:

我创建了一个带有伴奏.xib的视图控制器(添加一种弹出窗口/菜单,允许用户选择要播放的视频)。屏幕/应用程序右上角的按钮调用一个函数,该函数分配我创建的videoMenu类的新实例,然后将其视图添加为子视图。当用户选择视频时,调用一个函数来隐藏弹出框/菜单的视图,然后释放实例(在显示/播放视频之前)。如果菜单是“打开”并再次按下该按钮,我将其设置为关闭按钮(隐藏然后释放菜单)...即切换菜单。

如果我一直按下按钮,会出现菜单,然后一遍又一遍地隐藏/释放......这是预期的。我注意到在Instruments-> Allocations中,当调用版本时,分配不会减少。当我打开/关闭/打开/关闭/等时,分配会不断增加,好像释放实际上没有释放内存。我在菜单的NSLog中添加了dealloc,以确保dealloc实际上已被调用。

我注意到如果在调用[videoMenu.view removeFromSuperview]之前调用[videoMenu release],则分配实际上会减少。

removeFromSuperview是解决方案吗? 有必要吗?

.xib文件中有很多UIImageViews,我也想知道它们是否是分配不断增加的原因(在我上面列出的例子中)...意思是相同的图像只是不断获取一遍又一遍地缓存?

0 个答案:

没有答案