[英]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.