ICDeviceBrowser detects camera devices

I am developing an app using a data cable to link a camera. When I enter the page for the first time, I can detect the camera device, and then when I exit the page and enter again, I cannot detect the linked camera.

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    [self addImageCaptureCore];
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self checkCameraConnection];
    });
}

- (void)checkCameraConnection {
    if (@available(iOS 13.0, *)) {
        NSArray<ICDevice *> *connectedDevices = self.browser.devices;
        
        if (connectedDevices.count > 0) {
            NSLog(@"Camera is connected");
        } else {
            NSLog(@"Camera is not connected");
        }
    } 
    else {
        // Fallback on earlier versions
    }
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    
    if (@available(iOS 13.0, *)) {
        if (self.cameraDevice) {
            if (self.cameraDevice.hasOpenSession) {
                [self.cameraDevice requestCloseSession];
                
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    [self.browser stop];
                    self.browser.delegate = nil;
                    self.browser = nil;
                });
            }
            else {
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    [self.browser stop];
                    self.browser.delegate = nil;
                    self.browser = nil;
                });
            }
        }
    } else {
        // Fallback on earlier versions
    }
}

- (void)addImageCaptureCore {
    if (@available(iOS 13.0, *)) {
        ICDeviceBrowser *browser = [[ICDeviceBrowser alloc] init];
        browser.delegate = self;
        [browser start];
        self.browser = browser;
    } 
    else {
        
    }
}

#pragma mark - ICDeviceBrowserDelegate
    
- (void)deviceBrowser:(ICDeviceBrowser*)browser didAddDevice:(ICDevice*)device moreComing:(BOOL) moreComing  API_AVAILABLE(ios(13.0)){
    NSLog(@"Device name = %@",device.name);
    
    if ([device isKindOfClass:[ICCameraDevice class]]) {
        if ([device.capabilities containsObject:ICCameraDeviceCanAcceptPTPCommands]) {
            ICCameraDevice *cameraDevice = (ICCameraDevice *)device;
            cameraDevice.delegate = self;
            [cameraDevice requestOpenSession];
            self.cameraDevice = cameraDevice;
        }
    }
    
}

- (void)deviceBrowser:(ICDeviceBrowser*)browser didRemoveDevice:(ICDevice*)device moreGoing:(BOOL) moreGoing  API_AVAILABLE(ios(13.0)){
    if (self.cameraDevice) {
        if (self.cameraDevice.hasOpenSession) {
            [self.cameraDevice requestCloseSession];
            self.cameraDevice.delegate = nil;
            self.cameraDevice = nil;
        }
        else {
            self.cameraDevice.delegate = nil;
            self.cameraDevice = nil;
        }
    }
}

#pragma mark - ICCameraDeviceDelegate

- (void)cameraDevice:(ICCameraDevice*)camera didAddItems:(NSArray<ICCameraItem*>*) items  API_AVAILABLE(ios(13.0)){
    if (items.count > 0) {
        ICCameraItem *latestItem = items.lastObject;
        NSLog(@"name = %@",latestItem.name);
    }
    
}

#pragma mark - ICDeviceDelegate

- (void)device:(ICDevice*)device didOpenSessionWithError:(NSError* _Nullable) error  API_AVAILABLE(ios(13.0)){
    if (error) {
        NSLog(@"Failed to open session %@",error.localizedDescription);
    }
    else {
        NSLog(@"open session success");
    }
}

- (void)device:(ICDevice*)device didCloseSessionWithError:(NSError* _Nullable)error  API_AVAILABLE(ios(13.0)){
    if (error) {
        NSLog(@"close session error = %@",error.localizedDescription);
    }
    else {
        NSLog(@"didCloseSession");
    }
}

- (void)didRemoveDevice:(ICDevice*)device {
    
}