如何在重写方法中强制调用 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
调用。
如何在覆盖的方法中强制调用 [super methodName...]
?
除了在评论里说,还有别的办法吗,也许是个小技巧?
您可以使用 objc_required_super
attribute:
- (void)foo __attribute__((objc_requires_super));
这样,如果用户不调用 super
,编译器将发出警告。但除了那个警告之外,没有办法真正强制执行它。
AFAIK,仅在 dealloc
(使用 ARC 时)编译器强制调用 super
。它通过禁止你自己调用它来做到这一点,所以它总是可以安全地注入 super
调用。