Objective c 继承.m文件中声明的方法

Objective c 继承.m文件中声明的方法,objective-c,uiviewcontroller,derived-instances,Objective C,Uiviewcontroller,Derived Instances,我现在知道Objective-C中没有受保护的方法,这是我的问题。 我有两个ViewController,其中有许多共享的函数和属性。我的设想是拥有一个BaseViewController来保存共享的方法和属性,两个类将从中继承和重写所需的功能,同时使用相同的变量, 我不希望通过将共享函数放在.h文件中来将其转换为公共函数 为了帮助澄清我的问题,我添加了代码:) 调用[super-setBtns:p_btns]引发错误: DerivedGameViewController.m:BaseViewC

我现在知道Objective-C中没有受保护的方法,这是我的问题。 我有两个ViewController,其中有许多共享的函数和属性。我的设想是拥有一个BaseViewController来保存共享的方法和属性,两个类将从中继承和重写所需的功能,同时使用相同的变量, 我不希望通过将共享函数放在.h文件中来将其转换为公共函数

为了帮助澄清我的问题,我添加了代码:)

调用
[super-setBtns:p_btns]引发错误:

DerivedGameViewController.m:BaseViewController的@interface没有可见的声明选择器“setBtns:”


我怎样才能做到这一点?是否有人可以发布一个代码片段或指出我的错误(在代码或概念中)。

只需使用类别中声明的受保护方法创建第二个标题。适当地命名并记录标题


UIGestureRecognizer.h,可能会以您为例。

只需使用类别中声明的受保护方法创建第二个标头。适当地命名并记录标题


UIGestureRecognizer.h和may server作为一个例子。

我不确定这是我要找的,所以我通过添加代码编辑了我的问题,如果你能再看一眼,我会非常感激:)我不确定这是我要找的,所以我通过添加代码编辑了我的问题,如果你能再看一眼,我会非常感激:)
@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