الهدف C - الصفيف قابل للقراءة في وظيفة (باطلة) ولكن ليس (ibacte)

StackOverflow https://stackoverflow.com/questions/3632095

سؤال

مرحبًا جميعًا ، لدي صفيف يحمل جميع مسارات ملف .AIF في تطبيقي ، والذي وجدته باستخدام MainBundle والموارد.

يجب نقل هذه الصفيف من خلال وحدات تحكم عرض 2 للوصول إلى حيث يتم استخدامها بالفعل. المشكلة هي ، إما تعطل أو يسجل شيئًا خاطئًا تمامًا. عندما أقوم بالتصحيح ، أحصل على ملاحظة exc_bad_access في الحادث ، ولكن ليس عندما أقوم بتشغيلها عادة حيث تتعطل فقط.

هذا هو المكان الذي يعمل فيه ؛

- (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);
}

التي تُرجع قائمة طويلة من المسارات التي تنتهي في filename.aif. انت وجدت الفكرة.

لكن...

// 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];
}

هذا المقتطف يسبب تحطم. إذا قمت بتعليق الأجزاء التي تتعامل فيها مع PossdrumSounds ، فإنها تعمل بشكل جيد. وإلا فإنه يتعطل أو يغير بطريقة ما الصفيف لاحتواء كائنات عشوائية مثل UiviewControllers التي ليس لدي أي فكرة عن المكان الذي أتوا منه.

كل المساعدة موضع تقدير ، شكرا!

هل كانت مفيدة؟

المحلول

من المحتمل أنك تتجول في صفيف داخل DrumObject دون الاحتفاظ بها ، لذلك ينتهي الأمر بالاكتب من القمامة.

نصائح أخرى

أنت تطلق defaultSounds في buildDrumTrigger, ، لذلك بحلول الوقت الذي تحاول فيه الطرق الأخرى الوصول إليها ، فإنه يشير إلى البيانات التي تم تعويضها.

يشير exc_bad_access إلى أنك تحاول الوصول إلى الذاكرة التي لا يمكنك الوصول إليها ، عادةً لأنك قد قمت بالفعل بإطلاقها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top