Звук не воспроизводится после обновления до AR C Obj- c - PullRequest
0 голосов
/ 30 января 2020

Я недавно обновил свой проект с Automatic Reference Counting (ARC), и он сломал мои методы playAudio (отлично работал раньше). Я новичок в ARC, но я почти уверен, что это из-за счет сохранения или из-за того, что система немедленно высвобождает объект, поэтому вы никогда не услышите звук. Я создаю iVar из AudioPlayer и пытаюсь сохранить свой личный счет, как указано в вопросе, связанном ниже. Я вызываю playSystemSound: из другого класса, сначала выделив] init; тогда [class playSystemSound:1002]; Если кто-то может указать, что я делаю неправильно, это было бы очень признательно.

AVAudioPlayer не воспроизводит звук

 @property (strong, nonatomic) AVAudioPlayer *soundToPlay;

-(void)playsystemSound:(long long)eventType{

NSString *path = [NSString stringWithFormat:@"/User/Library/Preferences/com.idd.iconomaticprefs.plist"];
NSMutableDictionary* savedDict = [NSMutableDictionary dictionary];
[savedDict addEntriesFromDictionary:[NSDictionary dictionaryWithContentsOfFile:path]];

NSMutableArray *activeThemesArray = [savedDict valueForKey:@"ActiveThemes"];

if ([activeThemesArray count]) {
    NSString *soundURL;
    for (NSString *name in activeThemesArray) {
        soundURL = [NSString stringWithFormat:@"/Library/Themes/%@/UISounds",name];
        if ([[NSFileManager defaultManager]fileExistsAtPath:soundURL]) {

            //UISounds avilable in theme determine event type
            if (eventType == 1002) {
                //respring?
                soundURL = [NSString stringWithFormat:@"/Library/Themes/%@/UISounds/lock.caf",name];
            }
            if (eventType == 1003) {
                soundURL = [NSString stringWithFormat:@"/Library/Themes/%@/UISounds/Anticipate.caf",name];
            }
            if (eventType == 1004) {
                soundURL = [NSString stringWithFormat:@"/Library/Themes/%@/UISounds/key_press_click.caf",name];
            }

            if (eventType == 1008) {
                soundURL = [NSString stringWithFormat:@"/Library/Themes/%@/UISounds/photoShutter.caf",name];
            }


            // setup session correctly
            AVAudioSession *audiosession = [AVAudioSession sharedInstance];
            [audiosession setCategory:AVAudioSessionCategoryAmbient error:nil];
            [audiosession setActive:YES error:nil];

            // play sound
            NSURL *url = [NSURL fileURLWithPath:soundURL];
            self.soundToPlay = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
            [self.soundToPlay prepareToPlay];
            [self.soundToPlay play];

            break;
        }
    }
}

}

1 Ответ

1 голос
/ 30 января 2020

Если нет сильных ссылок, сохраняющих его, ваша AudioSession исчезнет go, как только метод вернется.

...