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

标签 ios objective-c macos cocoa cocoa-touch

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

除了在评论中指出之外,还有其他方法,也许是一个技巧吗?

最佳答案

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

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

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

据我所知,只有在 dealloc 中(使用 ARC 时)编译器才会强制调用 super。它通过禁止您自己调用它来实现这一点,因此它始终可以安全地注入(inject) super 调用。

关于ios - 如何在重写方法中强制调用 super,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28982741/

相关文章:

ruby-on-rails - OS X 10.8 上 Rails 应用程序中的段错误

ios - iOS 沙盒的具体限制

ios - 我想用按钮在 Tableview 中一一显示单元格

iOS NSDateFormatter 以数字形式格式化日期和年份,以文字形式格式化日期

ios - 使用NSInteger作为NSDictionary objectForKey中的类型ID

macos - 为什么我的 Ctrl 键在 iTerm.app 中被禁用了?

python - 在 Mac OS X 版本 10.5.8 上安装 Python 3.1

c# - 如何使数字键盘出现在 Xamarin.iOS 中的 View Controller 条目上?

objective-c - 每五分钟检查一次远程数据库上的数据 ios

iphone - 合并 CoreData 托管上下文时出现异常/崩溃