Estoy anidando bloques, y se ve UGGGGLY. ¿Hay alguna manera de escribir esto menos feo? Principalmente buscando sugerencias de sintaxis, en lugar de estructurales, pero aceptaré cualquiera de las dos.Sintaxis/formato al anidar bloques object-c
Mi método de bloques fábrica,
-(NSImage *(^)(CGFloat size, BOOL preview))resizeBlock {
return (NSImage *(^)(CGFloat size, BOOL preview))[[^(CGFloat size, BOOL preview){
// image-resizing code
return [[[NSImage alloc] init] autorelease];
} copy] autorelease];
}
¿Qué se llama desde un número de funciones similares a esta,
-(void)queueResize:(CGFloat)targetSize toView:(NSImageView *)targetView {
NSImage*(^sizeBlock)(CGFloat,BOOL) = [self resizeBlock];
NSBlockOperation *bo = [NSBlockOperation blockOperationWithBlock:^(void) {
NSImage *previewImage = (NSImage*)sizeBlock(targetSize,YES);
targetView.image = previewImage;
}];
[queue addOperation:bo];
}
cola es un objeto NSOperationQueue. No compilará sin todo el lanzamiento (feo feo). Amidoinitrito?
Editar: De acuerdo con la respuesta de Dave DeLong, y http://www.cimgf.com/2008/02/16/cocoa-tutorial-nsoperation-and-nsoperationqueue/, he cambiado la línea
targetView.image = previewImage;
a ser,
[targetView performSelectorOnMainThread:@selector(setImage:) withObject:previewImage waitUntilDone:YES];
@Jesse, hombre no playa odio, aprecio. –
Haha es mi idioma "principal", así que no odiaba bromear. En cuanto al código ... se ve tan lindo como puede usando bloques, creo, pero no es realmente un experto. –
¿Está '[self resizeBlock]' llamado en cualquier otro lugar de su programa, o simplemente en el método 'queueResize: toView:'? –