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

How to enforce calling super in overridden method

如何在覆盖的方法中强制调用 [super methodName...]

除了在评论里说,还有别的办法吗,也许是个小技巧?

您可以使用 objc_required_super attribute:

标记方法
- (void)foo __attribute__((objc_requires_super));

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

AFAIK,仅在 dealloc(使用 ARC 时)编译器强制调用 super。它通过禁止你自己调用它来做到这一点,所以它总是可以安全地注入 super 调用。