繁体   English   中英

Objective-C私有财产继承

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM