Pergunta

Ei, todos, eu tenho uma matriz que contém todos os caminhos de arquivo .aif no meu aplicativo, que encontrei usando o MainBundle e os recursos.

Essa matriz precisa ser transmitida através de 2 controladores de exibição para alcançar onde é realmente usado. O problema é que trava ou registra algo totalmente errado. Quando depuro, recebo uma nota exc_bad_access no acidente, mas não quando o executo normalmente onde ela trava.

Aqui está o lugar onde funciona;

- (void)buildDrumTrigger {
     defaultSounds = [[NSArray alloc] initWithObjects: @"kick_3", @"aif", @"snare_1", @"aif",            @"HiHat_1", @"aif", @"ride_1", @"aif", @"crash_1", @"aif", @"crash_2", @"aif", @"crash_3", @"aif", @"wave_1", @"aif", nil];
     self.DrumObject = [[DrumTrigger alloc] initWithSounds:defaultSounds:5:volumeBox];
     [defaultSounds release];
     NSLog(@"Possible Sounds: %@", DrumObject.possDrumSounds);
}

Isso retorna uma longa lista de caminhos que terminam no nome do arquivo.aif. Você entendeu a ideia.

No entanto...

// Change the current view to the options window.
- (IBAction)goToOptionsView {
    NSLog(@"Loading options menu");
    NSLog(@"DrumObject.drumSounds: %@", DrumObject.drumSounds);
    NSLog(@"DrumObject.possDrumSounds: %@", DrumObject.possDrumSounds);
    optionsViewController.soundBox2 = DrumObject.drumSounds;
    optionsViewController.possDrumSounds = DrumObject.possDrumSounds;
    [self presentModalViewController:optionsViewController animated:YES];
}

Esse trecho causa um acidente. Se eu comentar as peças em que lida com os supostos, funciona bem. Caso contrário, trava ou de alguma forma altera a matriz para conter objetos aleatórios como o UIViewControllers, dos quais não tenho idéia de onde eles vieram.

Todas as ajuda apreciadas, obrigado!

Foi útil?

Solução

Você provavelmente está mantendo a matriz dentro do DrumObject sem mantê -lo, então acaba sendo sobrescrito de lixo.

Outras dicas

Você está lançando defaultSounds dentro buildDrumTrigger, então, quando outros métodos tentam acessá -lo, ele aponta para dados que foram desalocados.

EXC_BAD_ACCESS Indica que você está tentando acessar a memória que não pode acessar, normalmente porque você já o lançou.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top