मैं ब्लॉक घोंसला कर रहा हूं, और यह UGGGGLY दिखता है। क्या यह कम बदसूरत लिखने का कोई तरीका है? ज्यादातर संरचनात्मक के बजाय वाक्यविन्यास सुझावों की तलाश में हैं, लेकिन मैं या तो स्वीकार करूंगा।सिंटेक्स/स्वरूपण जब ऑब्जेक्ट-सी ब्लॉक घोंसला
मेरे ब्लॉक कारखाना विधि,
-(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];
}
कतार एक NSOperationQueue वस्तु है। यह सभी (बदसूरत बदसूरत) कास्टिंग के बिना संकलित नहीं होगा। Amidoinitrite?
संपादित करें: डेव डीलॉन्ग के जवाब के अनुसार, और http://www.cimgf.com/2008/02/16/cocoa-tutorial-nsoperation-and-nsoperationqueue/, मैं लाइन
targetView.image = previewImage;
होने के लिए,
[targetView performSelectorOnMainThread:@selector(setImage:) withObject:previewImage waitUntilDone:YES];
@ जेसे, आदमी नाटक नफरत करता है, सराहना करता है। –
हाहा इसकी मेरी 'मुख्य' भाषा है, इसलिए मैं सिर्फ मजाक नहीं कर रहा था। जहां तक कोड ... यह उतना सुंदर दिखता है जितना कि मैं विश्वास करता हूं कि ब्लॉक का उपयोग कर सकता हूं, लेकिन वास्तव में एक विशेषज्ञ नहीं। –
क्या आपके प्रोग्राम में कहीं भी '[स्वयं आकार बदलें ब्लॉक' कहा जाता है, या बस 'कतार में पुन: उपयोग करें: toView:' विधि? –