为什么我们需要在IOS中使用类别?

时间:2015-08-27 12:26:09

标签: ios objective-c objective-c-category

我刚刚开始在ios中开发应用程序,我已经阅读了很多教程,但我仍然不满足于该教程。 我想知道理论为什么我们需要使用类别和有什么好处。

5 个答案:

答案 0 :(得分:7)

参考

http://www.g8production.com/post/37787310116/categories-in-objective-c-how-to-extend-methods

Difference between Category and Class Extension?

类别和扩展程序允许您扩展现有类的功能,而无需子类化(不继承任何内容)向现有类添加功能,甚至可以添加到现有类的功能有源。

类别允许您通过在接口文件(.h)中声明它们并在实现文件(.m)中定义它们来向类添加(仅)方法,就像在基本的Objective-C类中一样。遗憾的是,类别无法为类声明其他实例变量。

现在这个声明的方法成为分类类的一部分!!!

您可以添加到分类类的类别数量没有限制,但每个类别名称必须不同,应声明并定义一组不同的方法。

修改

<强>分类

  

- &GT;在目标c中,当您想要为没有继承的类添加更多功能时,您只需使用类别。

     

- &GT;类别用于添加新方法而不是属性

课程扩展

  

- &GT;在目标c中,当您想要将某些属性的行为设为私有时,请使用类扩展。

     

- &gt;主要用于属性。

答案 1 :(得分:4)

类别允许您将方法添加到现有类 - 甚至是您没有源的类。 类别是一个强大的功能,允许您扩展现有类的功能而无需子类化

How to use category in obj video

答案 2 :(得分:1)

使用类别的好处。    如果您使用类别,则无需记住您为该特定功能创建的自定义类。只需使用类别,您就可以向现有类添加新功能。通过创建相同类的对象,您可以访问它。

答案 3 :(得分:1)

在我的某个应用中,我想更改默认字体。因此,我没有不断更改字体,而是设置了一个类别,如果它将默认字体更改为我想要的字体。

答案 4 :(得分:0)

类别是装饰器模式的实现

类别是一种特殊的类,它使您可以添加其他方法到类中,而不必子类化或更改原始类。

类别和子类之间的区别非常简单:类别允许您添加新方法,但不能覆盖现有方法。您不能将新属性或实例变量添加到类别中,而只能使用现有属性或实例变量。如果要添加新的属性或实例变量,则需要创建一个子类,并利用继承的功能来创建其他属性和方法。

在此处了解更多-https://www.raywenderlich.com/45942/intro-object-oriented-design-part-2