在将UIImageView添加到另一个Windows视图时,如何管理内存?

时间:2011-03-08 22:03:02

标签: iphone ipad memory uiimageview screen

由于我认为我最近的其他帖子(Memory management when adding a UIImageView to another viewController's view from another viewController's view)让所有人都害怕,而且我的时间不多了,我只想简单地问一下。如果您想知道我正在做更多细节,请参阅另一篇文章。

在将UIImageView添加到另一个Windows视图时,如何管理内存和释放?

即。我在一个视图中创建一个UIImageView,并在另一个窗口视图中将其添加为子视图。另一个窗口正在被电视使用。

现在我有:

            mapImageViewEx = [[UIImageView alloc] init];

            // I think you can ignore these two things below
            CGPoint p = mapScrollView.contentOffset;
            mapImageViewEx.frame = CGRectMake((p.x*-1), (p.y*-1), mapImageView.frame.size.width, mapImageView.frame.size.height);

            NSString *mapExFileLocation = [[NSBundle mainBundle] pathForResource:[map_List objectAtIndex:mapNum] ofType:@"png"];
            NSData *mapExIMGData = [NSData dataWithContentsOfFile:mapExFileLocation];
            mapImageViewEx.image = [UIImage imageWithData:mapExIMGData];

            // finds the other window's view controller's view
            UIView *containerExViewP = (UIView*)[del.switchExVC.view viewWithTag:9000];

            // adds it
            [containerExViewP addSubview:mapImageViewEx];

我遇到的问题是每次退出视图时都会不断堆积内存。在iPad屏幕视图中释放图像的dealloc无效。

1 个答案:

答案 0 :(得分:0)

更改

        mapImageViewEx = [[UIImageView alloc] init];

        mapImageViewEx = [[[UIImageView alloc] init] autorelease];

autorelease意味着将来某个未知点的引用计数将减少。

addSubview将增加计数,因此您不必担心它。

只要妥善处理父视图,就会释放mapImageViewEx。