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++;
あるビューから別のビューにジャンプしたいときは、次に2つのボタンを使用します。
[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];
}
しかし、これも役に立ちません。
編集: 1 つのことを明確にする必要があります: アプリケーションの実行中に各 UIView が必要です。これは、アプリケーションが終了する前にそれを解放できないことを意味します。
EDIT2: コードは、実際のコードにより似たように編集されます。