我有A,B和B类课程。 C在iPhone项目中。当iPhone应用程序运行时,类(A或B)可以实例化类C的对象。我怎么能在C类中知道哪个类实例化了对象(A或B)?如果不向C添加ivar,有什么方法可以知道吗?我尝试使用超类,但我要么使用它错了,要么它不适合我正在尝试做的事情。
谢谢!
答案 0 :(得分:1)
假设您发表评论说c类不受您的控制。
你可以继承c并在init中添加一个新的init方法initFromClass: (id) parent
,你可以设置你想要的任何标志
答案 1 :(得分:1)
超类是对象继承的对象,而不是对象的创建者。
回传的一种方式是通过委托 - 你能得到(A或B)在C上设置委托属性吗?这有点像你想要避免的ivar,但使用协议它被认为是精细的OO代码。
知道C需要知道的原因会很好。他需要发送方法吗?代表团很棒。如果没有,那么使用William Bonar提到的自定义init方法是可能的。如果您正在使用ViewController,那么您可以使用诸如presentViewController之类的方法
祝你好运,达明