Objective-Cには保護されたメソッドがないことがわかりました。これが私の問題です。共有される多くの機能とプロパティを持つ 2 つの viewController があります。私のビジョンは、共有メソッドとプロパティを保持する BaseViewController を持つことでした。そこから、同じ変数を使用しながら、2 つのクラスが必要な機能を継承してオーバーライドします 。 hファイル
私の質問を明確にするために、コードを追加しています:)
@interface BaseViewController ()
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *uiButtons;
- (void)setBtns:(NSArray *)p_btns; //tried with & without this line
@end
@implementation BaseViewController
- (void)setBtns:(NSArray *)p_btns {
uiButtons = p_btns;
//do something generic with the buttons (set font, image etc.)
}
@end
@interface DerivedViewController ()
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttonsConnectedToTheActualView;
@end
@implementation DerivedViewController
- (void) setBtns:(NSArray *)p_btns {
[super setBtns:p_btns];
//do something specific with the buttons (decide if they face up or down according to this class logic)
}
@end
を呼び出すと[super setBtns:p_btns];
エラーが発生します。
DerivedGameViewController.m:No visible @interface for 'BaseViewController' declares the selector 'setBtns:'
どうすればこれを達成できますか?誰かがスニペットを投稿したり、私の間違いを指摘したりできますか (コードまたはコンセプトで)。