MustOverride 提供了一个宏,您可以使用它来确保抽象基类的方法必须被子类重写。
Apple 目前没有提供在编译时标记此方法的方式,而通常在基类实现中抛出异常的方法也有两个缺点:1) 这意味着该方法只有在被调用时才会崩溃,这可能在难以复现的条件下发生,2) 您无法提供基类实现并要求子类调用 super。
MustOverride 使用一些运行时魔法在加载时扫描类列表,如果方法没有被实现,那么当应用程序启动时会立即崩溃,即使该方法可能永远不会被调用。
注意:'支持的'意味着该库已经测试了与此版本。'兼容的'意味着该库应该在该操作系统版本上工作(即它不依赖于任何不可用的 SDK 特性),但不再对其进行兼容性测试,可能需要调整或错误修复才能正确运行。
启用或禁用 ARC 都可以工作。
要将 MustOverride 安装到您的应用程序中,将 MustOverride.h 和 .m 文件拖放到项目中。要使用它,只需将 MustOverride.h 头文件导入到任何类中,然后将以下宏添加到任何必须重写的方法的实现体内部
SUBCLASS_MUST_OVERRIDE;
如下所示
- (void)someMethod
{
SUBCLASS_MUST_OVERRIDE;
}
非常感谢 Dan Tomlinson (@dantoml) 的启发,以及 Alex Akers (@a2) 使用的方式的数据技巧注册方法。
版本 1.1
版本1.0