我使用带有 ARC 的 xcode 4.4。我在 ViewController.m 中动态创建了 UIView:
UIView* myviews[10];
然后在 - (void)viewDidLoad 函数中,我用我需要的图片填充每一个
myviews[viewIndex] = [[UIView alloc]initWithFrame:myrec];
UIImage *testImg;
UIImageView * testImgView = [[UIImageView alloc]init];
testImg = [UIImage imageNamed:[NSString stringWithFormat:@"imgarray%d.png", viewIndex];
[testImgView setImage:testImg];
[myviews[viewIndex] addsubView:testImgView];
viewindex++;
所以一切似乎都很好,当我想从一个视图跳到另一个视图时,我接下来使用两个按钮:
[self.view addSubview:views[viewIndex]];
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:1.0f];
[animation setType:@"rippleEffect"];
[animation setSubtype:kCATransitionFromTop];
//[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[self.view.layer addAnimation:animation forKey:@"transitionViewAnimation"];
似乎没什么不好,但是当我在视图之间切换时,内存消耗会以巨大的速度增长。然后我会收到内存不足的警告,或者有时应用程序会崩溃。
我尝试使用 UIViewController 数组并在控制器之间切换:没有任何变化,内存不足警告是我最终得到的。
也许我需要以某种方式清理内存?但是怎么做?ARC不允许使用release等..
最后我在添加新子视图之前尝试过(对不起,也许不是很专业)是这个
NSArray *viewsToRemove = [self.view subviews];
for (UIView *views in viewsToRemove) {
[views removeFromSuperview];
}
但这也无济于事。
编辑:我需要澄清一件事:在应用程序执行期间我需要每个 UIView,这意味着我不能在应用程序退出之前释放它。
EDIT2:代码经过编辑,看起来更像真实的代码。