簡體   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