【发布时间】:2015-05-13 00:19:47
【问题描述】:
如何在被覆盖的方法中强制调用[super methodName...]?
除了在 cmets 中说明之外,还有其他方法,也许是技巧?
【问题讨论】:
标签: ios objective-c macos cocoa cocoa-touch
如何在被覆盖的方法中强制调用[super methodName...]?
除了在 cmets 中说明之外,还有其他方法,也许是技巧?
【问题讨论】:
标签: ios objective-c macos cocoa cocoa-touch
您可以使用objc_required_super attribute标记方法:
- (void)foo __attribute__((objc_requires_super));
这样,如果用户不调用super,编译器就会发出警告。但除了那个警告之外,没有办法真正强制执行它。
AFAIK,仅在 dealloc(使用 ARC 时)编译器会强制调用 super。它通过禁止您自己调用它来做到这一点,因此它始终可以安全地注入super 调用。
【讨论】: