我正在编写10个单独的实用程序类,用于从服务器填充查找表,每个查找表有一个实用程序类。
我注意到所有10个非常相似,我相信我可以创建一个抽象类来完成90%的工作,当我从子类实例化它时,我可以将参数传递给它。
问题在于,当超类想要引发一个委托事件时,它将具有相同的名称,无论它继承在哪个子类中,因此无论类或控制器拥有子类,都需要一种方法来识别超类正在触发的子类代表来自。
有没有办法告诉哪个子类拥有代理被触发的超类?
e.g。 我有一个名为'Animal'的超类,它有一个委托事件'Animal want food' 子类'dog'和'cat'都继承自'Animal' 一个名为'farmyard'的NSObject实例化了'dog'和'cat'类,并使自己成为'dog'和'cat'的代表。 当'dog'继承的'Animal'实例触发'Animal want food'时,'farmyard'对象会收到它。 - '农家'如何知道“狗”或“猫”是否解雇了“动物需要食物”代表活动?
答案 0 :(得分:4)
因为委托方法应该将对象作为参数传递:
- (void)animalWantsFood:(Animal *)animal
然后接收者可以检查animal
。
查看Apple代码中提供的委托方法,您将看到委托模式的相同实现。
答案 1 :(得分:0)
你所描述的是错误的 - 这就是你的问题出现的原因
作为狗的动物将永远属于阶级狗请参阅: http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming