我刚刚开始在ios中开发应用程序,我已经阅读了很多教程,但我仍然不满足于该教程。 我想知道理论为什么我们需要使用类别和有什么好处。
答案 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)
类别允许您将方法添加到现有类 - 甚至是您没有源的类。 类别是一个强大的功能,允许您扩展现有类的功能而无需子类化
答案 2 :(得分:1)
使用类别的好处。 如果您使用类别,则无需记住您为该特定功能创建的自定义类。只需使用类别,您就可以向现有类添加新功能。通过创建相同类的对象,您可以访问它。
答案 3 :(得分:1)
在我的某个应用中,我想更改默认字体。因此,我没有不断更改字体,而是设置了一个类别,如果它将默认字体更改为我想要的字体。
答案 4 :(得分:0)
类别是装饰器模式的实现
类别是一种特殊的类,它使您可以添加其他方法到类中,而不必子类化或更改原始类。
类别和子类之间的区别非常简单:类别允许您添加新方法,但不能覆盖现有方法。您不能将新属性或实例变量添加到类别中,而只能使用现有属性或实例变量。如果要添加新的属性或实例变量,则需要创建一个子类,并利用继承的功能来创建其他属性和方法。
在此处了解更多-https://www.raywenderlich.com/45942/intro-object-oriented-design-part-2