在尝试减少使用CIDetector检测人脸时的计算时间时,我尝试重用单个检测器实例用于多个人脸检测,正如苹果推荐的那样:
该类可以维护许多可能影响性能的状态变量。因此,为了获得最佳性能,重用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有关。
发布于 2014-06-09 12:43:43
问题解决了,至少部分通过删除标志CIDetectorTracking: @YES创建检测器。
它消除了崩溃,同时在功能上妥协。提交了一份官方的bug报告。
https://stackoverflow.com/questions/24109232
复制相似问题