簡體   English   中英

如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM