[英]Objective-C property alias
假設ParentClass
有一個名為a
的字符串屬性:
@property (nonatomic, strong) NSString *a;
在子類ChildClass
,我希望屬性b
是super.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.