我需要调用我的类的祖父母方法。
@class Grandparent
+--->@class Parent
+---->@class Child
每个类都实现一个方法:
-(void)foo
如果我想从子类调用父方法 foo 我使用:
[super foo]
如果我想给爷爷奶奶打电话,该怎么办?
无法打电话
[super [super foo]]
蚂蚁的想法?
当然,您可以通过help父类的。如果你的foo
calls [super foo]
和你的超类然后依次 calls [super foo]
因为它期望这种行为,那么一切就都准备好了。这是一种常见的模式(例如-init
and -dealloc
).
但是你不能使用正常的 Obj-C 语法直接跳转。每个子类围绕其状态和方法为类定义自己的一组语义。如果您可以在继承链上的任何位置任意调用实现,而中间实现对此一无所知,那么任何实现都无法保证其自身状态的完整性,并且会破坏类周围的抽象。
换句话说,我讨厌说这句话的人,如果这似乎是你真正想做的,你应该重新考虑你的设计。 (如果是这样,请随时提出一个新问题来讨论对象模型的设计。这里的人们将很乐意提供帮助。)
也就是说,从技术上讲,我怀疑你can通过直接处理 Obj-C 运行时来实现这一点。您可以获得对象的类引用,然后是其超类,然后its超类,并从中获取您想要的方法实现。然后用你的对象调用它。此代码是供读者练习的。 :)这是文档 http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)