Помощь по Задаче C?Мое приложение продолжает зависать? - PullRequest
1 голос
/ 18 марта 2011

Я создаю приложение для Iphone / Itouch, но продолжаю сталкиваться с несколькими серьезными утечками, которые просто приводят к сбою приложения.В моей игре, когда я нажимаю кнопку воспроизведения (с главного экрана), она переходит на другую страницу, на которой есть игра.Но сразу после его появления в консоли появляется предупреждение: уровень памяти = 1.Что может случиться?Вот мой метод ViewDidLoad:

-(void)viewDidLoad {

[super viewDidLoad];
array = [[NSMutableArray alloc] initWithCapacity:100];
bulletArray = [[NSMutableArray alloc] initWithCapacity:100];
pos = CGPointMake(0.0,-5.0);


NSString *path = [[NSBundle mainBundle] pathForResource:@"GloriousMorning" ofType:@"mp3"];
AVAudioPlayer *theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
//float effects_Volume = [[NSUserDefaults standardUserDefaults] floatForKey:@"effectsVolume"];
//theAudio.volume = effects_Volume;
[theAudio play];

}

А также, второй вопрос, так как моя игра - стрелялка, пользователь нажимает кнопку под названием «Огонь».Но каждый раз, когда я тестирую свое приложение на устройстве, оно падает, когда я нажимаю кнопку огня.Вот мой код для кнопки огня.

-(IBAction)Fire {   
NSString *path = [[NSBundle mainBundle] pathForResource:@"gunShot" ofType:@"mp3"];
AVAudioPlayer *theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
//float effects_Volume = [[NSUserDefaults standardUserDefaults] floatForKey:@"effectsVolume"];
//theAudio.volume = effects_Volume;
[theAudio play];


//IBOutlet UIImageView *newBullet = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Bullet.png"]];
UIImageView *newBullet = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Bullet.png"]];
newBullet.frame = CGRectMake(0, 0, 10.0, 10.0);
newBullet.center = CGPointMake(239.0, 236.0);
[bulletArray addObject:newBullet];
[self.view addSubview:newBullet];

}

Сначала я создаю звук.Затем я помещаю пулю в том месте, где в данный момент находится пистолет, и добавляю его в массив, чтобы каждые 0,01 секунды в другом бите кода я мог бегать по массиву и проверять каждую пулю на предмет обнаружения столкновения.

Пожалуйста, скажите мне, что я делаю не так.Спасибо !!!

Ошибка, когда я нажимаю кнопку «Огонь», вызывающую сбой приложения, такова:

GDB: средства форматирования данных временно недоступны, будут повторяться после «продолжения» (неизвестная ошибка загрузкиразделяемая библиотека "

А также я думаю, что я делаю огромную утечку, когда пытаюсь воспроизвести аудио, по крайней мере, это то, что кто-то сказал мне. (Если это так, пожалуйста, скажите мне, как это исправить)

1 Ответ

0 голосов
/ 22 марта 2011

Вы распределили аудио, поэтому вам нужно отпустить его, когда вы закончите.Может быть лучше сделать этот ивар, чтобы вам не приходилось настраивать и прерывать звук каждый раз, когда они нажимают кнопку огня.

...