可以覆盖类别方法吗?IOS

RMD*_*Dan 12 overriding ios objective-c-category

我正在尝试计划如何将某些方法添加到某些对象的所有实例.我认为向父对象(UIViewController)添加一个类别可以用于我想做的事情,但是我可以覆盖这样添加的方法吗?大多数情况下,子类将使用默认方法,但我知道我需要至少覆盖​​一次方法.

还有什么其他方法我应该考虑我想做什么?

我想要做的例子:

我有一组对象,就像日记的页面一样.这些页面是UIViewControllers的子类.我想添加加载,保存和类似的方法.在日记类(NSObject的子类)中,我有一个存储每个Journal页面实例的数组.我想要它所以我可以从数组中选择一个页面并运行方法,而不必知道具体的对象类,因为它们都应该有方法.

Eth*_*ser 22

简答:是的,你可以.出于继承的目的,超类上的类别方法被视为实际在超类中定义的方法,并且可以以相同的方式重写.

  • Apple不赞成在子类上使用类别来覆盖超类中的方法,但是使用子类中的方法来覆盖超类上的类别没有任何问题.实际上,每当你对一个框架类进行子类化时,你很有可能在没有意识到的情况下这样做. (8认同)