![](/img/trans.png)
[英]How to have stored properties in Swift, the same way I had on Objective-C?
[英]How to use stored properties in Objective-C
我是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;
};
您的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
如果有機會從不僅僅是主隊列訪問此屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.