Я создал контроллер вида с PNG-изображением и длинным фоном jpg (ширина в два раза превышает ширину iPad - 2048 пикселей). перемещение png-изображения делает фоновое изображение перемещающимся влево плавно. увидеть это изображение для наглядного сравнения:Падение iPad во время анимации фонового изображения
Когда играл с ним на IPAD, он выходит из строя в любой момент я переместить его более 3-4 раз один за другим. Кто-нибудь знает, что может быть причиной этих сбоев? Я попытался проверить утечку памяти и не смог найти ее, хотя я не уверен, что она действительно свободна от них. Отладчик снимает предупреждение о перегрузке памяти, но я не думаю, что там столько ресурсов памяти. есть фоновое изображение jpg 2048X768 px (около 150 kb) и статическое изображение png около 90 kb. кроме того, есть два звука, один около 200 кб, который воспроизводится один раз и один из примерно 50 кб, который запускается на каждом событии с сенсорным движением. мой код реализации выглядит следующим образом:
#import "Page5.h"
#define kUpdateRate (1.0/60.0)
#define kRightX (1024.0)
#define kLeftX (0.0)
@implementation Page5
@synthesize animationTiny, bg, kMoveX;
@synthesize narPlayer, fxPlayer, narPath, fxPath;
- (void)viewDidLoad {
animationTiny.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"5-tiny-ipad-1" ofType:@"png"]];
[super viewDidLoad];
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(flipIntervalEnded) userInfo:nil repeats:NO];
}
- (void)narPlayPath:(NSString *)path {
if (narPlayer!=nil) [narPlayer release];
narPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
narPlayer.delegate = self;
[narPlayer play];
}
- (void)fxPlayPath:(NSString *)path {
if (fxPlayer!=nil) [fxPlayer release];
if ([tmbHDPrefs integerForKey:@"SoundFX"]==YES) {
fxPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
fxPlayer.delegate = self;
if ([narPlayer isPlaying]==YES) {
fxPlayer.volume = 0.2;
}
[fxPlayer play];
}
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
- (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];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
-(void)flipIntervalEnded {
timer=nil;
int trackNumber = 8;
NSString *narrationString = [NSString stringWithFormat:@"tmbtrack%i_%i",[tmbHDPrefs integerForKey:@"Narration"],trackNumber];
narPath = [[NSBundle mainBundle] pathForResource:narrationString ofType:@"caf"];
[self narPlayPath:narPath];
narPath=nil;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == animationTiny) {
if ([timerFloat isValid]){
[timerFloat invalidate];
timerFloat = nil;
}
self.kMoveX = 30.0;
fxPath = [[NSBundle mainBundle] pathForResource:@"fx5-water-swoosh" ofType:@"caf"];
[self fxPlayPath:fxPath];
fxPath = nil;
timerFloat = [NSTimer scheduledTimerWithTimeInterval:kUpdateRate target:self selector:@selector(scrollView) userInfo:nil repeats:YES];
}
}
-(void)scrollView {
float oldX = self.bg.center.x - self.kMoveX;
float newX = oldX;
if (oldX < kLeftX) {
newX = kRightX;
}
self.bg.center = CGPointMake(newX, self.bg.center.y);
self.kMoveX -= 0.05;
if (kMoveX <= 0.0) {
kMoveX = 0.0;
}
}
- (void)dealloc {
self.animationTiny = nil;
self.bg = nil;
self.narPlayer = nil;
self.fxPlayer = nil;
self.narPath = nil;
self.fxPath = nil;
[super dealloc];
}
@end
TNX заранее, Ури
Я не уверен, что вызывает крах, но я хотел сообщить вам, какие размеры изображений и звуков на диске не совпадают с объемом используемой ими памяти. Эти файлы хранятся в сжатом формате на диске, но их необходимо распаковать в памяти, чтобы они могли воспроизводиться/отображаться. 150 кбайт jpg может представлять собой несколько МБ в памяти. – chrissr