簡體   English   中英

設置初始化程序中超類中定義的屬性

[英]Setting properties defined in a super class in the initialiser

從我了解到的經驗來看,在init設置值的一般規則是直接使用ivars。

例如

@interface CustomClass

@property (nonatomic, strong) NSString *name;

@end

接着:

- (instancetype)initWithName:(NSString *)name
{
    if (self = [super init]) {
        _name = name;
    }

    return self;
}

現在到目前為止一切順利。 我對一個稍微不同的情況感興趣。 假設您要對UIView進行子類化,並在初始化程序中要為該子類分配背景色。 在這里,屬性backgroundColor是在父類中定義的。 我的問題是:在初始化程序中使用self是不好的風格還是潛在的錯誤? 在其他地方設置背景顏色會更好嗎?

- (instancetype)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame]) {
        self.backgroundColor = [UIColor greenColor];
    }

    return self;
}

我相信您在那里所做的一切都很好。 那時,在調用super.init ,該self存在,並且可以使用它(您也正在調用return self ,所以為什么其他對self引用會出錯?)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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