Iphone 如何清理在BarcodePickerController:ViewWill中创建的AVCaptureSessions将出现在RedLaser SDK中?

Iphone 如何清理在BarcodePickerController:ViewWill中创建的AVCaptureSessions将出现在RedLaser SDK中?,iphone,barcode-scanner,Iphone,Barcode Scanner,使用allocations performance tool进行的调查显示,在BarcodePickerController:Views中,AVCaptureSessions正在被分配,并且从未发布过,它将出现在RedLaser SDK中 BarcodePickerController *_barcodeScanner = [[BarcodePickerController alloc] init]; [_barcodeScanner viewDidLoad]; //[_barcodeSca

使用allocations performance tool进行的调查显示,在BarcodePickerController:Views中,AVCaptureSessions正在被分配,并且从未发布过,它将出现在RedLaser SDK中

BarcodePickerController *_barcodeScanner = [[BarcodePickerController alloc] init];

[_barcodeScanner viewDidLoad];

//[_barcodeScanner viewWillAppear:NO]; // Option 1.
//[_barcodeScanner viewDidAppear:NO]; // Option 1.

[_barcodeScanner stopScanning];

for (int i = 0; i < 200; i++) {
    NSLog(@"Run:%d", i);
    //[_barcodeScanner resumeScanning]; // Option 1.
    //[_barcodeScanner stopScanning]; // Option 1.

    [_barcodeScanner viewWillAppear:NO]; // Option 2.
    [_barcodeScanner viewDidAppear:NO];  // Option 2.
    [_barcodeScanner viewWillDisappear:NO]; // Option 2.
    [_barcodeScanner viewDidDisappear:NO]; // Option 2.
}

//[_barcodeScanner viewWillDisappear:NO]; // Option 1.
//[_barcodeScanner viewDidDisappear:NO]; // Option 1.

[_barcodeScanner viewDidUnload];

[_barcodeScanner release];
背景是我正在编写一个包含两个AVCaptureSessions的应用程序。一个由red laser创建和管理,如上面的示例代码所示,另一个由我自己手动创建。我需要使用上面代码中所示的选项2而不是选项1来解决另一个bug,即自动对焦在第二次创建的捕获会话(无论是我的还是红色激光器)中停止工作

我发现解决自动对焦bug的唯一方法是完全重新创建捕获会话,而不是仅仅启动和停止它们。我可以使用上面选项2中所示的红色激光sdk来实现这一点,但这最终会导致我的应用程序在会话之间经过一定次数的转换并收到内存警告后被杀死。发生这种情况的原因是AVCaptureSessions未被清理

使用选项1时,我没有任何内存警告或泄漏


如何清理这些任性的AVCaptureSessions?

RedLaser技术支持已确认这是他们SDK 2.X中的一个bug。他们的技术支持人员和我本人已经确认,该漏洞已在SDK版本3中修复