Из того, что я прочитал, Core Graphics должна быть поточно-ориентированной.Однако, когда я запускаю приведенный ниже код в фоновом потоке (через NSOperationQueue), процессор моего приложения Cocoa резко возрастает почти до 100%, и программа перестает отвечать на запросы.
Если я запускаю тот же код из основного потока,все работает нормально.
- (CGImageRef) createResizedImageFrom:(CGImageRef)image withSize:(CGSize) size {
CGColorSpaceRef colorspace = CGImageGetColorSpace(image);
if (CGColorSpaceGetModel(colorspace) == kCGColorSpaceModelIndexed) {
CGColorSpaceRelease(colorspace);
NSLog(@"Indexed color space not supported.");
return nil;
}
CGContextRef context = CGBitmapContextCreate(NULL, size.width, size.height,
CGImageGetBitsPerComponent(image),
CGImageGetBytesPerRow(image),
colorspace,
kCGImageAlphaPremultipliedFirst);
CGColorSpaceRelease(colorspace);
if(context == NULL)
return nil;
CGContextDrawImage(context, CGRectMake(0, 0, size.width, size.height), image);
CGImageRef imgRef = CGBitmapContextCreateImage(context);
CGContextRelease(context);
return imgRef;
}
Я приостановил процесс из отладчика, но не смог найти ничего в трассировке стека потоков.Я не знаю, что вызывает скачок процессора.Есть ли что-то, что мне нужно сделать в дополнение к безопасности указанного выше кода?
Спасибо, Марк.