2017-08-29 44 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