2014-01-21 2 views
0

나는 앱에 AudioPlayer를 구현했습니다. [AVAudioRecorder prepareToRecord]를 호출하자마자; CPU 사용은 최대 5 %까지 증가합니다. 좋아, 뭔가 유용한 일이 있기 때문에. 하지만 [AVAudioRecorder stop] 후; CPU가 3 %로 떨어지고 거기에 머문다."sleeping"시 AVAudioRecorder가 3 % CPU를 사용하는 것을 막는 방법

이 내가 레코더 구현하는 코드입니다 :

- (void)prepareRecorder 
{ 
    outputFileString = [NSString stringWithFormat:@"%@/%@", [self applicationDocumentsDirectory], @"audio.m4a"]; 

    NSArray *pathComponents = [NSArray arrayWithObjects:[self applicationDocumentsDirectory], @"audio.m4a", nil]; 
    outputFileURL = [NSURL fileURLWithPathComponents:pathComponents]; 

    AVAudioSession *session = [AVAudioSession sharedInstance]; 
    [session setActive:YES error:nil]; 
    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; 

    NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];  
    [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey]; 
    [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
    [recordSetting setValue:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey]; 

    recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:nil]; 
    recorder.delegate = self; 
    recorder.meteringEnabled = YES; 
    [recorder prepareToRecord]; 
} 

이/해제 ARC에서 객체를 할당 해제 할 수 있는지 모르겠어요,하지만 난 노력

recorder = Nil; 

어떻게 나는 이것을 해결합니까? 아니면 3 %에 대해 걱정하지 않아도 될까요?

+0

100 회 시작/중지 할 때도 이와 같은 현상이 발생합니까? 또는 멈출 때 더 이상 3 %에 있지 않는가? –

+0

네, 아무리 시작하고 멈추더라도 최소한 3 %를 유지합니다. – Mathijs

답변

0

AudioRecording을 시작하고 멈추더라도 3 %를 유지한다고 가정하면 사운드 누락은 없습니다.하지만 SoundRecording 프레임 워크는 일부 개인 사운드 녹음 인스턴스를 캐시합니다 (Apple 프레임 워크 후드) 그리고 그 이유 중 하나는 다음에 처음으로 녹화하는 것보다 빠르게 녹화를 시작하는 것입니다. 이러한 캐시 된 인스턴스는 사운드 플레이어가 더 이상 사용되지 않으며 추가 메모리가 필요할 경우 할당 해제됩니다.

마찬가지로 AVPlayer와 MFMessageComposeViewController (그리고 아마도 더 많은 프레임 워크/api 's, 무겁게 달리는 것 같습니다) - 왜냐하면 - 언급 한 두 프레임 워크 모두 - 내가 SMS 양식을 보여 주려고 시도 할 때, 또는 비디오 재생 - 눈에 띄는 지연이 있습니다. 그 후에는 지연이 없습니다. 따라서 처음에는 캐시에서 중요한 것을로드합니다. 사용 가능한 메모리가 거의 없거나 응용 프로그램이 닫힌 경우 자동 제거 될 수 있습니다.

그래서 나는 이것에 대해 신경 쓰지 않는 것이 좋습니다.