Tôi đang lồng khối và trông có vẻ UGGGGLY. Có cách nào để viết điều này xấu xí hơn không? Chủ yếu là tìm kiếm các đề xuất cú pháp, thay vì cấu trúc, nhưng tôi sẽ chấp nhận.Cú pháp/định dạng khi lồng khối mục tiêu-01
My phương pháp nhà máy khối,
-(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];
}
nào được gọi từ một số chức năng tương tự như sau,
-(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];
}
hàng đợi là một đối tượng NSOperationQueue. Nó sẽ không biên dịch mà không có tất cả (xấu xí xấu xí) đúc. Amidoinitrite?
Edit: Như mỗi câu trả lời Dave DeLong, và http://www.cimgf.com/2008/02/16/cocoa-tutorial-nsoperation-and-nsoperationqueue/, tôi đã thay đổi dòng
targetView.image = previewImage;
được,
[targetView performSelectorOnMainThread:@selector(setImage:) withObject:previewImage waitUntilDone:YES];
@Jesse, người đàn ông không ghét ghét, đánh giá cao. –
Haha ngôn ngữ 'chính' của tôi, vì vậy tôi không ghét phải nói đùa. Theo như mã ... nó trông đẹp như nó có thể sử dụng các khối tôi tin, nhưng không thực sự là một chuyên gia. –
Có phải '[self resizeBlock]' được gọi là bất cứ nơi nào khác trong chương trình của bạn hay chỉ trong phương thức 'queueResize: toView:'? –