@@ -115,23 +115,27 @@ - (void)record {
115115 [[AVAudioSession sharedInstance ] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil ];
116116 [[AVAudioSession sharedInstance ] setActive: YES error: nil ];
117117
118+ _isRecording = YES ;
119+ __weak typeof (self) weakSelf = self;
118120 [[AVAudioSession sharedInstance ] requestRecordPermission: ^(BOOL granted) {
119121 if (granted) {
120- _audioRecorder.delegate = self;
121- _audioRecorder.meteringEnabled = YES ;
122- [_audioRecorder record ];
123- _validator = nil ;
124- _isRecording = YES ;
125- [self startUpdateMeter ];
126-
127- if (_delegate && [_delegate respondsToSelector: @selector (didAudioRecordStarted: )]) {
128- [_delegate didAudioRecordStarted: self ];
122+ if (weakSelf.isRecording ) {
123+ weakSelf.audioRecorder .delegate = weakSelf;
124+ weakSelf.audioRecorder .meteringEnabled = YES ;
125+ [weakSelf.audioRecorder record ];
126+ weakSelf.validator = nil ;
127+ [weakSelf startUpdateMeter ];
128+
129+ if (weakSelf.delegate && [weakSelf.delegate respondsToSelector: @selector (didAudioRecordStarted: )]) {
130+ [weakSelf.delegate didAudioRecordStarted: weakSelf];
131+ }
129132 }
130133 }
131134 else {
135+ _isRecording = NO ;
132136 NSError *err = [NSError errorWithDomain: @" 没有权限" code: 200 userInfo: nil ];
133- if (_delegate && [_delegate respondsToSelector: @selector (didAudioRecord:err: )]) {
134- [_delegate didAudioRecord: self err: err];
137+ if (weakSelf. delegate && [weakSelf.delegate respondsToSelector: @selector (didAudioRecord:err: )]) {
138+ [weakSelf.delegate didAudioRecord: weakSelf err: err];
135139 }
136140 }
137141 }];
0 commit comments