1

私は次のコードを持っています:

SystemSoundID soundID;
NSString *soundFile = [[NSBundle mainBundle] pathForResource: _sound ofType:@ "wav"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef) [NSURL fileURLWithPath:soundFile], &soundID);
AudioServicesPlaySystemSound(soundID);


    [UIView animateWithDuration: 0.6f
                          delay: 0.1f
                        options: UIViewAnimationTransitionCurlUp
                     animations:^{
                         [appDelegate.presstobook setFrame:  CGRectMake(136, appDelegate.window.frame.size.height - 50, 47, 47)];
                     }
                     completion:^(BOOL finished){

                         presstobook = NO;
                     }
     ];

コードの残りの部分に影響を与えずにサウンドを再生するにはどうすればよいですか?サウンドを再生してコードを一時停止したくないですか?コードの残りの部分に影響を与えることなくサウンドの再生が非同期で行われるようにコードを変更するにはどうすればよいですか?ありがとう!

4

1 に答える 1

2

これでコードが一時停止すると思われる理由は何ですか?ドキュメントには次のように書かれています。

音が数秒間再生される場合があるため、この関数は非同期で実行されます。

ここにある何かがブロックする場合、私はそれがだと思いAudioServicesCreateSystemSoundID()ます。しかし、これがブロックされない場合でも、サウンドを再生するたびに、特にそれらを破棄しない場合は、これらのいずれかを作成することはおそらく良い考えではありません。ある種のセットアップでこれを一度作成し、それからいつでも好きなときにそれを再生する必要がありAudioServicesPlaySystemSound()ます。

于 2013-01-21T23:59:23.377 に答える