MustOverride 1.1

MustOverride 1.1

测试已测试
语言语言 Obj-CObjective C
许可证 zlib
发布上次发布2015年2月

Nick Lockwood 维护。



  • 作者:
  • Nick Lockwood

目的

MustOverride 提供了一个宏,您可以使用它来确保抽象基类的方法必须被子类重写。

Apple 目前没有提供在编译时标记此方法的方式,而通常在基类实现中抛出异常的方法也有两个缺点:1) 这意味着该方法只有在被调用时才会崩溃,这可能在难以复现的条件下发生,2) 您无法提供基类实现并要求子类调用 super。

MustOverride 使用一些运行时魔法在加载时扫描类列表,如果方法没有被实现,那么当应用程序启动时会立即崩溃,即使该方法可能永远不会被调用。

支持的操作系统和 SDK 版本

  • 支持的构建目标 - iOS 8.1 / Mac OS 10.10 (Xcode 6.1, Apple LLVM 编译器 6.0)
  • 最早支持的部署目标 - iOS 7.0 / Mac OS 10.9
  • 最早兼容的部署目标 - iOS 4.3 / Mac OS 10.6

注意:'支持的'意味着该库已经测试了与此版本。'兼容的'意味着该库应该在该操作系统版本上工作(即它不依赖于任何不可用的 SDK 特性),但不再对其进行兼容性测试,可能需要调整或错误修复才能正确运行。

ARC 兼容性

启用或禁用 ARC 都可以工作。

安装

要将 MustOverride 安装到您的应用程序中,将 MustOverride.h 和 .m 文件拖放到项目中。要使用它,只需将 MustOverride.h 头文件导入到任何类中,然后将以下宏添加到任何必须重写的方法的实现体内部

SUBCLASS_MUST_OVERRIDE;

如下所示

- (void)someMethod
{
    SUBCLASS_MUST_OVERRIDE;
}

致谢

非常感谢 Dan Tomlinson (@dantoml) 的启发,以及 Alex Akers (@a2) 使用的方式的数据技巧注册方法。

发行说明

版本 1.1

  • 现在正确检测定义在类别中的方法。
  • 现在报告所有覆盖错误,而不仅仅是第一次遇到的错误。
  • 修复了 ClassOverridesMethod 中的内存泄漏。
  • SubclassesOfClass性能优化。
  • 符合-Weverything警告级别。
  • 添加Podspec。

版本1.0

  • 首次发布。