为什么要在子类上使用类别?

Her*_*erb 2 objective-c subclassing objective-c-category

我只是揣摩相比,子类类别的上攻......我明白他们是如何实现的,但我看到就在此刻唯一的好处是,它可以节省你重构你的整个代码,如果你想延长在后期使用的课程,通常不应该通过良好的计划来实现.否则,它需要大约相同的时间来实现作为子类,它并没有真正带来不同的功能.因此,对于我对子类与类别的了解,我没有看到使用类别的原因.有人可以洗头,解释存在类别的原因吗?我会非常感激:)

Rob*_*Rob 5

您专注于您创建的对象,在这种情况下,子类化很好.但是如果你调用一些返回一些标准对象的Cocoa方法会怎么样呢.您是否希望每次都必须创建子类的新实例,以便您可以使用新方法?不,能够创建通过类别添加到现有类的方法更方便.

此外,您可能希望新方法不仅可用于基类,还可用于其所有子类(例如,如果您添加扩展NSString,它也可用于NSMutableString实例).

有关更多信息,请参阅使用Objective-C编程指南中的自定义现有类中的讨论.