2017-08-29 41 views
-1

在斯威夫特的变量值我可以使用匿名封给一个变量的值:分配从一个Objective-C座

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); 
+0

你需要运行(可能不正确的说法)块,如:'thumbnailImageView()'。 – EDUsta

+0

@EDUsta Thankyou。修正错误 – ios

+0

使用'[self addSubview:thumbnailImageView()];'??? –

回答

0

你试图在Objective-C与斯威夫特的语法来写。 Swift示例描述了一个懒惰的初始化变量,而Objective-C声明了一个返回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; 
} 
+0

的快速代码功能感谢您的详细解答 – ios