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

Pet*_*isu 1 macos cocoa cocoa-touch objective-c ios

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

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

Dar*_*ust 5

您可以使用以下objc_required_super属性标记方法:

- (void)foo __attribute__((objc_requires_super));
Run Code Online (Sandbox Code Playgroud)

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

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