iOS中的子类问题

时间:2012-01-27 09:50:35

标签: iphone ios ipad

在我的例子中,UIViewController B是UIViewController A的子类.B可以肯定地访问A中的所有方法和变量,因为B是A的子类(即A是B的父类)。

但是,A需要来自B的变量。有可能这样做吗?

感谢。

3 个答案:

答案 0 :(得分:0)

将该变量添加为子类A中的默认值。然后它也可以在子类B中使用?

如果这是你不想要的东西,那么我想你的设计有问题吗?

答案 1 :(得分:0)

如果在子类中声明的实例变量有一个getter方法,那么超类中的任何方法总是可以询问其类的对象,如果它响应ToToSelector:对于该getter方法,如果是,则调用它来获取其值实例变量。

答案 2 :(得分:0)

实际上,如果你需要这种关系 - 你的设计是错误的。我的意思是 - 在你的情况下你不需要继承关系,但是像聚合或组合这样的东西。例如,你的关系类型打破了Liskov替代原则。

BUT。 Objective C接受反向关系。您可以使用委托(@protocol)来描述可以从接受此@protocol的未知对象中检索某些数据的接口。

因此,在你的情况下,B类应符合一个协议,该协议提供对B的某些属性的访问.A应该能够使用该协议,即知道A需要的getter。