为啥我的 ModalViewController 没有释放?
Posted
技术标签:
【中文标题】为啥我的 ModalViewController 没有释放?【英文标题】:Why my ModalViewController doesn't release?为什么我的 ModalViewController 没有释放? 【发布时间】:2011-03-30 00:50:38 【问题描述】:我有下一步行动。
- (IBAction)openThumbMap:(UIButton *) sender
ThumbmapViewController *viewController = [[ThumbmapViewController alloc] initWithInfo:mainPages];
viewController.title = self.title;
viewController.delegate = self;
[self presentModalViewController:viewController animated:YES];
[viewController release];
很简单,不是吗?好吧...一旦我这样做了[self dismissModalViewControllerAnimated:YES]
;在 viewController 内部,我回去了,但是内存并没有释放它。更糟糕的是,如果我再次调用它,内存会再次增加。为什么?
在我的 viewController 内部,我创建了很多 UIImageView,在将这些类似子视图添加到 viewController 的视图中后,我将其释放。那么,如果所有的都像子视图,必须在dissmis控制器后释放它,不是吗?
问题是。为什么内存还在增加呢?
编辑:
在我的 initWithInfo: 方法中,我使用来自父 viewController 的数据设置了一个 NSArray 属性。使用这个数组,我创建了一堆小的 UIImage,当我完成我的模态视图控制器时我会释放它们。
【问题讨论】:
你的视图控制器是否保留了它的委托? 有没有定时器?他们在对象上保留一个直到失效。 你是这个意思?@property (assign) id <ThumbmapViewControllerDelegate> delegate;
显然没有区别。不,不涉及计时器。
显示你的 -initWithInfo: 方法。
我只有:- (id)initWithInfo:(NSMutableArray *)magazineArray self = [super initWithNibName:@"ThumbmapViewController" bundle:nil]; if (self) self.mainPages = magazineArray; 返回自我;
【参考方案1】:
不是模态视图控制器本身,而是里面加载的 UIImage。我发现当你调用[UIImage imageNamed:@"blahblah.jpg"]
时,ios 会创建一个缓存,以防你再次调用该图像。所以,使用[UIImage imageWithData:(NSData *)]
是我错误表述问题的答案。
【讨论】:
以上是关于为啥我的 ModalViewController 没有释放?的主要内容,如果未能解决你的问题,请参考以下文章
从 ModalViewController 更新 splitViewController
如何使用 UIModalPresentationPageSheet 调整 modalViewController 的大小