MyLoginViewController
是 PFLogInViewController
的子类。
logInViewController
是 MainViewController.m
MyLogInViewController
类型的对象
即
// MainViewController.m
MyLogInViewController *logInViewController = [[MyLogInViewController alloc] init];
logInViewController.delegate = self;
logInViewController.fields = PFLogInFieldsUsernameAndPassword |
PFLogInFieldsTwitter |
PFLogInFieldsFacebook |
PFLogInFieldsSignUpButton |
PFLogInFieldsDismissButton;
如您所见,在 MainViewController.m
中设置了 fields 属性
我想在 MyLogInViewController
中设置它,以便每个 MyLogInViewController
对象都设置它。
但是,fields 的类型是readonly
从中可以看出:https://www.parse.com/docs/ios/api/Classes/PFLogInView.html#//api/name/fields
@property (nonatomic, readonly, assign) PFLogInFields 字段
如何覆盖它? (我考虑过使用自定义 getter - 但不知道如何正确执行)
我尝试做的事情是否被视为不良做法,如果是,为什么?
编辑:原来我在看View文档不是 ViewController文档。感谢 mrt 发现这一点。
最佳答案
如果有人做了只读的事情,并且他们知道自己在做什么,那可能意味着它真的不应该设置在类之外。但是,可能仍然有一些理由去做你想做的事。为什么不在 init 方法中这样做呢?
编辑:
可以设置 PFLogInViewController 中的 fields 属性。所以你可以在你的 MyLogInViewController 类初始化方法中做到这一点
- (id)init
{
self = [super init];
if (self) {
// Do aditional init stuff
self.fields = PFLogInFieldsUsernameAndPassword | PFLogInFieldsTwitter | PFLogInFieldsFacebook | PFLogInFieldsSignUpButton | PFLogInFieldsDismissButton;
}
return self;
}
这样,您就不会干扰类的内部结构。
关于ios - 如何在子类中设置只读属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20407759/