[英]Objective-C Private Property Inheritance
我只是想確保我對屬性繼承的理解是正確的。 我目前正在嘗試制作UIViewController的子類。 在我的UIViewController中,我的所有插座和此類插座都在實現部分中聲明,如下所示:
@interface BaseClass()
@property (weak, nonatomic) IBOutlet UILabel *scoreLabel;
@end
因此,那些屬性是私有的,對嗎? 現在,當我嘗試創建一個子類並使用我的getter和setter訪問那些屬性時,我無法從我的子類中訪問它們。 是否像在我的子類的實現部分中一樣再次聲明這些屬性的正確形式?
@interface SubClass()
@property (weak, nonatomic) IBOutlet UILabel *scoreLabel;
@end
我想我可以這樣做,但是后來我覺得它破壞了繼承的目的。 正確的方法是什么/我在做什么錯?
我會在BaseClass
的公共接口中聲明該屬性-我看不出有任何理由將它們放在類擴展中。
@interface BaseClass : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *scoreLabel;
@end
@interface SubClass : BaseClass
// No need to redeclare the property as you're inheriting it.
@end
[編輯]
如果必須使用類擴展名,則可以使用私有標頭來實現相同的目的。
BaseClass(BaseClass.h)的公共頭
@interface BaseClass : UIViewController
@end
BaseClass的專用標頭(BaseClass-Private.h)
@interface BaseClass ()
@property (weak, nonatomic) IBOutlet UILabel *scoreLabel;
@end
子類的公共標頭(SubClass.h)
#import "SubClass.h"
@interface SubClass : BaseClass
@end
子類(SubClass.m)的實現
#import "BaseClass-Private.h"
@implementation SubClass
@end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.