如果类别如此强大,那么什么时候是对iOS类进行子类化的合适时机



类别功能强大,可以添加方法,还有可以添加其他属性的关联&ivars,在目标C.中很难看到子类的重要性

有这么多开源类别是在开源中构建的,我真的认为子类没有什么意义。关联还可以提供调用链(在关联属性实现内部),因此不需要真正的继承。

当我想创建扩展UILabel的MyLabel或扩展NSString的MyString时,有人能提供确切的用例吗?

  • 子类可以安全地覆盖超类中的方法;类别不能
  • 子类只为新类的实例自定义行为,而不是为超类的所有实例自定义行为
  • 子类以类别集合所不能的方式声明意图

如果不想扩展现有类,则需要使用子类化。

假设您希望能够将对象映射到JSON中。如果通过category扩展NSObject,则意味着从NSObject派生的所有类都应该具有一些类似代码的映射规则。这不是一条路,因为几乎所有的类都是NSObject的子类。

为了避免这种情况,您必须在NSObject的子类中实现JSON映射。因此,每个人都会知道,子类的所有实例都提供了映射所需的方法,并且可以正确工作。

一般而言:

  • Categories用于添加方法等,并应用于超类的所有实例。。。以NSString为例
  • 子类可以添加/覆盖(更改)部分,并且可以应用于类的特定实例,而不是NSString中的所有内容

最新更新