从 Objective-C 块中分配变量值

Assigning a variable value from an Objective-C Block

在 Swift 中,我可以使用匿名闭包为变量赋值:

let thumbnailImageView: UIImageView = {
   let imageView = UIImageView()
   imageView.backGroundColor = UIColor.blueColor()
   return imageView;
}

addSubView(thumbnailImageView)
thumbnailImageView.frame = CGRectMake(0,0,100,100)

我试图在 Obj-C 中做同样的事情,但这会导致在添加子视图和设置其框架时出错:

UIImageView* (^thumbnailImageView)(void) = ^(void){
    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.backgroundColor = [UIColor blueColor];
    return imageView;
};

[self addSubview:thumbnailImageView];

thumbnailImageView.frame = CGRectMake(0, 0, 100, 100);

您正在尝试使用 Swift 语法在 Objective-C 中编写。 Swift 示例描述了一个延迟初始化的变量,而 Objective-C 示例声明了一个 returns UIImageView 的简单块。您需要使用

调用该块
[self addSubview:thumbnailImageView()];

但是,在这种情况下使用块来初始化变量没有什么意义。如果您正在寻找延迟初始化的属性,它在 Objective-C

中看起来像这样
@interface YourClass : Superclass

@property (nonatomic, strong) UIImageView* imageView;

@end

@synthesize imageView = _imageView;

- (UIImageView*)imageView
{
    if (!_imageView) {
        // init _imageView here
    }
    return _imageView;
}