重用CIDetector时出现异常

时间:2014-06-08 18:07:50

标签: ios objective-c image-processing ciimage

尝试使用CIDetector在检测面部时减少计算时间我试图按照Apple的建议重复使用单个检测器实例进行多个面部检测:

  

此类可以维护许多可能影响性能的状态变量。因此,为了获得最佳性能,请重用CIDetector实例,而不是创建新实例。

一切正常,直到我开始处理数千张照片。现在,我不时得到一个随机异常EXC_BAD_ACCESS。当我不重复使用检测器但每次都实例化一个新检测器时,这种情况不会发生。

一些相关的代码段:

@property (retain, nonatomic) CIDetector* faceDetector;

- (void)initialVals {
    NSDictionary *opts_context = @{kCIContextUseSoftwareRenderer: @NO};
    self.context = [CIContext contextWithOptions:opts_context];
    NSDictionary *opts = @{ CIDetectorAccuracy: CIDetectorAccuracyHigh,
                        CIDetectorTracking: @YES,
                        CIDetectorMinFeatureSize: @0.15
                      };
self.faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace context:self.context options:opts];

}

我不确定,但这个问题可能与CIDetector isn't releasing memory有关。

1 个答案:

答案 0 :(得分:1)

问题已解决,至少部分是在创建检测器时删除标记CIDetectorTracking: @YES

它可以在功能受损的同时消除崩溃。提交了官方错误报告。