【问题标题】:How to enforce calling super in overridden method [duplicate]如何在覆盖的方法中强制调用超级[重复]
【发布时间】:2015-05-13 00:19:47
【问题描述】:

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

除了在 cmets 中说明之外,还有其他方法,也许是技巧?

【问题讨论】:

    标签: ios objective-c macos cocoa cocoa-touch


    【解决方案1】:

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

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

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

    AFAIK,仅在 dealloc(使用 ARC 时)编译器会强制调用 super。它通过禁止您自己调用它来做到这一点,因此它始终可以安全地注入super 调用。

    【讨论】:

    • 非常方便!还有一个宏 NS_REQUIRES_SUPER
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多