Yuvaları yerleştiriyorum ve UGGGGLY görünüyor. Bunu daha az çirkin yazmanın bir yolu var mı? Çoğunlukla yapısal değil, sözdizimi önerileri arıyorum, ama ben de kabul edeceğim. Nesne-c bloklarını yerleştirirken sözdizimi/biçimlendirmesi
My blok fabrika yöntemi
, buna benzer fonksiyonları bir dizi denir-(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];
}
,
-(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];
}
kuyruğu bir NSOperationQueue nesnesidir. Tüm (çirkin çirkin) döküm olmadan derleme yapmaz. Amidoinitrite?
Düzenleme: Dave DeLong cevabı gereğince ve http://www.cimgf.com/2008/02/16/cocoa-tutorial-nsoperation-and-nsoperationqueue/, ben
targetView.image = previewImage;
olmak hattı,
[targetView performSelectorOnMainThread:@selector(setImage:) withObject:previewImage waitUntilDone:YES];
@Jesse, adam playa nefret etmiyor, takdir et. –
Haha benim 'ana' dilim, bu yüzden sadece şaka yapmıyordum. Kod kadarıyla ... inanıyorum ama gerçekten bir uzman değil, blokları kullanabileceği kadar güzel görünüyor. –
'[self resizeBlock]', programınızda başka bir yerde veya 'queueResize: toView:' yönteminde çağrılır mı? –