【发布时间】:2013-06-18 23:09:49
【问题描述】:
我有 3 节课
一个基类:MyBaseClass
实现一个方法:
- (void) aSuperMethod {
[[UtilClass sharedUtil] doThisAndSendAnswerToMe:self]
}
- (void) answerReader:(bla bla)someParams {}
MyBaseClass 的一个子类:MySubClass
这也实现了这些方法:
- (void) anotherMethod {
[[UtilClass sharedUtil] doThisAndSendAnswerToMe:self]
[self aSuperMethod];
}
- (void) answerReader:(bla bla)someParams {}
当然还有一个实用程序类:UtilClass
实现了这种方法:
- (void) doThisAndSendAnswerToMe:(id)listener {
do some stuff
[listener answerReader:someAnswerParams];
}
当然,在调试模式下,doThisAndSendAnswerToMe方法在两次调用中收到的监听器都是MySubClass类的。
如何根据呼叫来源指向 MySubClass 或 MyBaseClass ?
【问题讨论】:
-
“取决于呼叫来源”是什么意思?当我第一次阅读本文时,我以为您的意思是取决于对象的类,但这应该已经起作用了,因为方法调用
answerReader:将根据对象的类进行调度。 -
...您不想让侦听器接收到运行
answerReader:的调用吗?还是我误会你了?你有行[self.listener answerReader:someAnswerParams];... -
@gaige:为了更清晰,我做了一些修改。我的意思是“调用来源”是发起调用的方法和类类型。但在这两种情况下,对象的类都是 MySubClass。
-
@David:哎呀,“自我”。是一个错误。为了更清楚,我做了一些编辑。
标签: ios objective-c delegates subclass overloading