如何在重载方法中强制调用super

时间:2015-03-11 09:28:00

标签: ios objective-c macos cocoa cocoa-touch

如何在重写方法中强制调用[super methodName...]

除了在评论中陈述,还有另一种方式,也许是一招?

1 个答案:

答案 0 :(得分:5)

您可以使用objc_required_super attribute标记该方法:

- (void)foo __attribute__((objc_requires_super));

这样,如果用户没有调用super,编译器将发出警告。但除了这个警告之外,没有办法真正强制执行它。

AFAIK,仅在dealloc(使用ARC时)编译器强制执行调用super。它是通过禁止你自己调用它来实现的,所以它总能安全地注入super调用。