私はObjective-Cプログラミングの初心者で、典型的なメモリの問題を抱えています。ナビゲーション コントローラーに基づいてアプリを実行する必要があり、(プッシュ ビュー コントローラーを使用して) いくつかのビューを渡すときに、100 個の画像のアニメーションをロードします。シミュレーターではうまくいきますが、電話ではそうではありません... さまざまなアニメーションを開いてから閉じます。それを避けるためにアークを使用していますが、機能していないようです。また、アークを無効にして UIImageView を手動で解放しようとしましたが、すぐにクラッシュします。そのビューの 1 つの例を次に示します。
//.h
@interface Gegant_nou : UIViewController {
IBOutlet UIImageView *ImageViewGegant;
}
@property (nonatomic, strong) UIImageView* ImageViewGegant;
//.m
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *rigthButton = [[UIBarButtonItem alloc] initWithTitle:@"Detalls" style:UIBarButtonItemStyleBordered target:self action:@selector(canviarDetalls)];
self.navigationItem.rightBarButtonItem = rigthButton;
[rigthButton release];
ImageViewGegant.animationImages =@
[[UIImage imageNamed:@"0001.png"],
[UIImage imageNamed:@"0002.png"],
. load all the images
.
[UIImage imageNamed:@"0099.png"],
[UIImage imageNamed:@"0100.png"]];
ImageViewGegant.animationDuration = 4;
ImageViewGegant.animationRepeatCount = 0;
[ImageViewGegant startAnimating];
[self.view addSubview:ImageViewGegant];
self.title = @"Gegant nou";
[ImageViewGegant release];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload{
[super viewDidUnload];
[ImageViewGegant release];
}
なぜ起こるのか考えはありますか?助けてくれてありがとう!