簡體   English   中英

Objective-C屬性別名

[英]Objective-C property alias

假設ParentClass有一個名為a的字符串屬性:

@property (nonatomic, strong) NSString *a;

在子類ChildClass ,我希望屬性bsuper.a的別名。 意思是b本身並沒有任何價值,它只是指向a 如果值a變化,那么它應該反映在b ,和反之亦然。

在Objective-C中實現這一目標的最簡潔方法是什么。

你不能這樣做別名。 但是,屬性只是方法實現的簡寫。 子類繼承其超類的(可見)屬性,因此您可以執行以下操作:

- (void)setB:(NSString *)b {
    self.a = b;
}

- (NSString *)b {
    return self.a;
}

如果a對子類不可見,則必須執行以下操作:

- (void)setB:(NSString *)b {
    [self setValue:b forKey:@"a"];
}

- (NSString *)b {
    return [self valueForKey:@"a"];
}

這是有效的,因為在運行時沒有類型檢查,因此如果屬性存在(使用getter和setter的標准名稱),您仍然可以使用KVC來操作它。

暫無
暫無

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

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