由于我认为我最近的其他帖子(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无效。
答案 0 :(得分:0)
更改
mapImageViewEx = [[UIImageView alloc] init];
到
mapImageViewEx = [[[UIImageView alloc] init] autorelease];
autorelease意味着将来某个未知点的引用计数将减少。
addSubview将增加计数,因此您不必担心它。
只要妥善处理父视图,就会释放mapImageViewEx。