AVCaptureControl

I added some AVCaptureControl, then removed all of it. The phenomenon is that AVCaptureSession controls are 0 in number, but the keys can still display the previous AvcaptureControls

guard(_session.supportsControls) else return;
        
        for (AVCaptureControl *control in _session.controls) {
            [_session removeControl:control];
        }
        
        @weakify(self);
        if (self.captureControl.zoom) {
            if (self.zoomScaleControl) {
                self.zoomScaleControl.enabled = false;
                [_session removeControl:self.zoomScaleControl];
            }
            
            AVCaptureSlider *zoomSlider = [self.captureControl.zoom fetchCaptureSlider];
            [zoomSlider setActionQueue:dispatch_get_main_queue() action:^(float zoomFactor) {
                @strongify(self);
                if ([self.dataOutputDelegate respondsToSelector:@selector(videoCaptureSession:tryChangeZoomScale:)]) {
                    [self.dataOutputDelegate videoCaptureSession:self tryChangeZoomScale:zoomFactor];
                }
            }];
            self.zoomScaleControl = zoomSlider;
        } else {
            self.zoomScaleControl = nil;
        }
        
        if (self.captureControl.exposure) {
            if (self.exposureBiasControl) {
                self.exposureBiasControl.enabled = false;
                [_session removeControl:self.exposureBiasControl];
            }
            
            AVCaptureSlider *exposureSlider = [self.captureControl.exposure fetchCaptureSlider];
            [exposureSlider setActionQueue:dispatch_get_main_queue() action:^(float bias) {
                @strongify(self);
                if ([self.dataOutputDelegate respondsToSelector:@selector(videoCaptureSession:tryChangeExposureBias:)]) {
                    [self.dataOutputDelegate videoCaptureSession:self tryChangeExposureBias:bias];
                }
            }];
            self.exposureBiasControl = exposureSlider;
        } else {
            self.exposureBiasControl = nil;
        }
        
        if (self.captureControl.len) {
            if (self.lenControl) {
                self.lenControl.enabled = false;
                [_session removeControl:self.lenControl];
            }
            
            ORLenCaptureControlCustomModel *len = self.captureControl.len;
            AVCaptureIndexPicker *picker = [len fetchCaptureSlider];
            [picker setActionQueue:dispatch_get_main_queue() action:^(NSInteger selectedIndex) {
                @strongify(self);
                if ([self.dataOutputDelegate respondsToSelector:@selector(videoCaptureSession:didChangeLenIndex:datas:)]) {
                    [self.dataOutputDelegate videoCaptureSession:self didChangeLenIndex:selectedIndex datas:self.captureControl.len.indexDatas];
                }
            }];
            self.lenControl = picker;
        } else {
            self.lenControl = nil;
        }
        
        if ([_session canAddControl:self.zoomScaleControl]) {
            [_session addControl:self.zoomScaleControl];
        } else {
            self.zoomScaleControl = nil;
        }
        
        if ([_session canAddControl:self.lenControl]) {
            [_session addControl:self.lenControl];
        } else {
            self.lenControl = nil;
        }
        
        if ([_session canAddControl:self.exposureBiasControl]) {
            [_session addControl:self.exposureBiasControl];
        } else {
            self.exposureBiasControl = nil;
        }
        
        [_session setControlsDelegate:self queue:GetCaptureControlQueue()];
AVCaptureControl
 
 
Q