我是Objective-C的新手,我来自Swift,我可以声明一个视图
var container_view: UIView = {
var v = UIView()
v.backgroundColor = .white
return v
}()
但是在Objective-c这里无论如何我可以在我的头文件或.m文件中实现这个是试过的
-(UILabel *) laf {
UILabel *u = [[UILabel alloc] init];
u.text = @"Label here";
u.translatesAutoresizingMaskIntoConstraints = NO;
return u;
};
答案 0 :(得分:3)
您的Swift属性是一个存储属性,初始值计算一次。
Objective-C没有这样的功能。虽然您可以使用正确的代码进行模拟。
首先,您需要声明属性:
@property (nonatomic, strong) UIView *containerView;
如果它是公开的那么把它放在.h中。如果它是私有的,请将它放在类扩展中。
要提供(惰性)默认值,您需要覆盖getter方法:
- (UIView *)containerView {
if (_containerView == nil) {
UIView *v = [[UIView alloc] init];
v.backgroundColor = [UIColor whiteColor];
_containerView = v
}
return _containerView
}
如果有可能从多个主要队列访问此属性,最好使用dispatch_once
而不是if
。