何时使用类别以及何时使用子类?

phi*_*ham 29 inheritance subclass objective-c objective-c-category

谁能告诉我何时使用类别以及何时在Objective-C中使用子类?还请告诉我它们的优点和缺点.

con*_*are 41

如果要使用最少的代码更改类的所有实例的行为,则objective-c类别很有用.如果要仅更改某些实例的行为,并为其他实例保留原始方法,则子类化更有用.

类别可能很危险,尤其是如果您无法查看原始方法的来源,因此通常应该在第三方和私有框架而不是类别上使用子类.


cre*_*_rd 15

类别:如果我们想要在源不知道的给定类上添加任何方法,则使用它.当我们想要改变任何类的行为时,基本上使用它.

例如:如果我们想在NSString上添加一个方法来反转一个字符串,我们可以去分类.

子类化:如果我们想要修改状态以及任何类的行为或覆盖任何方法来改变父类的行为,那么我们就要进行子类化.

例如:我们将UIView子类化为在iOS代码中改变其状态和行为.


小智 8

加上coneybeare说的话.子类化是更好的自定义选项,当您只想向现有类添加某些功能时,可以更好地使用类别.