gpt4 book ai didi

ios - 在 Objective-C 中创建仅对子类可见的属性

转载 作者:可可西里 更新时间:2023-11-01 04:22:34 26 4
gpt4 key购买 nike

我正在尝试创建一个抽象类并在子类中继承它的一些属性。如果我将属性留在抽象类的头文件中,则所有属性都可以访问。问题是子类的实例也可以访问这些属性,这在我的例子中并不总是可取的。

例如,我的抽象类中有一个委托(delegate)将按钮按下发送到它的子类。我意识到这可能不是构建继承的最佳方式,因此欢迎提出其他建议。但是,我仍然想知道我的子类如何从它的父类(super class)继承一些属性而不使所有这些属性在它的实例中可用。提前致谢!

下面是一些示例代码:

@interface AbstractClass : UIView

@property (nonatomic, strong) id<ButtonDelegate>buttonDelegate;

@end



@protocol ButtonDelegate

@required
- (void) buttonWasPressed;

@end



@interface SubClass() <ButtonDelegate>

- (id)init {
self = [super init];
if (self) {
self.buttonDelegate = self;
}
return self;
}

-(void) buttonWasPressed {
[self doSomething];
}



@implementation ViewController

- (void)viewDidLoad {
SubClass *subClass = [[SubClass alloc] init];
subClass.buttonDelegate = self; // THIS IS NOT DESIRABLE
}

最佳答案

UIGestureRecognizer 那样做。

  1. 所有公共(public)属性和方法都进入 UIGestureRecognizer.h

  2. 所有 protected 属性和方法都进入 UIGestureRecognizerSubclass.h。仅在 *.m 文件中导入它。切勿将其包含在任何公共(public) header 中。

  3. 所有私有(private)属性和方法都进入 *.m 文件。使用@interface ClassName()

示例 https://gist.github.com/hfossli/8041396

关于ios - 在 Objective-C 中创建仅对子类可见的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19321001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com