Objective C - Array lesbar ist in einer (void) Funktion aber nicht ein (IBAction)
-
26-09-2019 - |
Frage
Hey alle, Ich habe ein Array, das alle der .aif Dateipfade in meiner app hält, die ich unter Verwendung von Main und Ressourcen gefunden.
Dieses Array muss nach unten durch 2 View-Controller werden zu erreichen, wo es tatsächlich verwendet wird. Das Problem ist, es entweder abstürzt oder Protokolle etwas völlig falsch. Wenn ich mir Debuggen eine EXC_BAD_ACCESS Notiz bei dem Absturz, aber nicht, wenn ich laufe es in der Regel, wo es stürzt gerade.
Hier ist der Ort, an dem es funktioniert;
- (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);
}
Dass kehrt eine lange Liste von Pfaden, dass Ende in fileName.aif. Sie erhalten die Idee.
Allerdings ...
// 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];
}
führt dazu, dass Schnipsel einen Absturz. Wenn ich die Teile kommentieren, wo sie mit possDrumSounds beschäftigt, es funktioniert gut. Sonst stürzt oder ändert irgendwie das Array zufällige Objekte wie UIViewControllers enthalten, dass ich keine Ahnung, woher sie kamen.
Alle Hilfe dankbar, danke!
Lösung
Du bist wahrscheinlich zu halten um Array innerhalb von DrumObject ohne es zu halten, so dass es mit Müll immer überschrieben endet.
Andere Tipps
Sie sind defaultSounds
in buildDrumTrigger
Freigabe, so durch die Zeit, andere Methoden, um den Zugriff versuchen Sie es, es zeigt auf Daten, die freigegeben worden ist.
EXC_BAD_ACCESS zeigt Sie den Zugriff auf Speicher versuchen, können Sie keinen Zugriff, in der Regel, weil Sie es bereits freigegeben haben.