Использование памяти детектора лица не освобождено
Я использую детектор лица iOS на всех возможных ориентациях изображения, как это
for (exif = 1; exif <= 8 ; exif++)
{
@autoreleasepool {
NSNumber *orientation = [NSNumber numberWithInt:exif];
NSDictionary *imageOptions = [NSDictionary dictionaryWithObject:orientation forKey:CIDetectorImageOrientation];
NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];
glFlush();
features = [self.detector featuresInImage:ciimage options:imageOptions];
//features = [self.detector featuresInImage:ciimage];
if (features.count > 0)
{
NSString *str = [NSString stringWithFormat:@"-I- found faces using exif %d",exif];
[faceDetection log:str];
NSTimeInterval duration = [NSDate timeIntervalSinceReferenceDate] - start;
str = [NSString stringWithFormat:@"-I- facedetection total runtime is %f s",duration];
[faceDetection log:str];
self.exif=[[NSNumber alloc] initWithInt:exif];
break;
}
else {
features = nil;
}
}
}
но в профилировщике кажется, что память растет с каждым разом:
Не уверен, если это правда, и если да, то как решить проблему
1 ответ
В вашем цикле большинство объектов имеют тип auto-release, основная проблема заключается в том, что вы присваиваете новое значение "функциям" в каждом цикле, и если выражение "if" истинно, вы не делаете его равным nil. Попробуйте сделать это:
if(features.count > 0)
{
/// your existing code here
features = nil;
break;
}