Objective c ImageCaptureCore功能:即使已设置代理,也不会获取回调

Objective c ImageCaptureCore功能:即使已设置代理,也不会获取回调,objective-c,macos,cocoa,delegates,scanning,Objective C,Macos,Cocoa,Delegates,Scanning,我使用苹果的ImageCaptureCore框架以无头方式执行扫描操作。该框架提供了执行扫描的所有功能,其间不涉及苹果的ICA对话框 现在,我所做的是编写一个类,它遵循ICDeviceBrowser和ICScannerDevice的协议。除此之外,我还安排了他们的代表。当系统检测到ICA设备时,以下功能将被命中: /* This message is sent to the delegate when a device has been added. This code adds the dev

我使用苹果的
ImageCaptureCore
框架以无头方式执行扫描操作。该框架提供了执行扫描的所有功能,其间不涉及苹果的ICA对话框

现在,我所做的是编写一个类,它遵循
ICDeviceBrowser
ICScannerDevice
的协议。除此之外,我还安排了他们的代表。当系统检测到ICA设备时,以下功能将被命中:

/* This message is sent to the delegate when a device has been added. This code adds the device to the cameras array. */
- (void)deviceBrowser:(ICDeviceBrowser*)browser didAddDevice:(ICDevice*)addedDevice moreComing:(BOOL)moreComing {
  NSLog( @"deviceBrowser:didAddDevice:moreComing: \n%@\n", addedDevice );

  if ( addedDevice.type & ICDeviceTypeScanner ) {
    addedDevice.delegate = self;

    mScannerDevice = (ICScannerDevice*)addedDevice;
    mScannerDevice.delegate = self;

    NSString * str = [addedDevice name];

    char *cpy = (char *)malloc([str length]+1);
    strlcpy(cpy, [str UTF8String], [str length] + 1);

    mICAScanners.push_back(cpy);
  }
  mScannersCollected = true;
}
从代码中可以看出,我已经为
ICScannerDevice
ICDevice
设置了代理。现在,我调用扫描过程:

[mScannerDevice requestScan];
理想情况下,这将启动扫描过程,我希望对已实现的委托的其中一个方法进行回调,例如:

- (void)device:(ICDevice *)device didEncounterError:(NSError *)error {
  NSLog( @"device:didEncounterError:error: \n%@\n", error );
}
或:

或者至少在已经实现的委托的各种其他方法中的一种。但是,我没有收到任何回调,甚至在
didEncounterError
方法中也没有


出现这种行为的原因是什么?

您是否打开会话?请看ScannerBrowser示例。顺便说一句,
addedDevice
mScannerDevice
是一回事,您不必设置两次委托。
 - (void)scannerDeviceView: (IKScannerDeviceView *)scanner didScanToURL: (NSURL *)url fileData: (NSData *)data error: (NSError *)error {
 }