码迷,mamicode.com
首页 > 其他好文 > 详细

分类(类别,category)与类扩展

时间:2020-09-07 19:05:25      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:类的成员   通过   category   基础   头文件   删除   自己   访问   setter   

1、分类

  • 1.1 分类的作用

    • 为原有的类增加一个方法,扩展分类的作用,靠扩oc中原有的类和自己创建的类(扩展已有类的功能)
    • 分类是原来的类增加方法
    • 在方法内部可以访问原有类的成员变量(定义在头文件中的)
  • 1.2 操作步骤:

    • 为原有类创建一个分类
    • 在分类中增加新的方法和实现
  • 1.3 注意点:

    • 分类不能扩展原有类的成员变量
    • @property在分类中只能生成getter setter方法的声明,不能生成实现和成员变量
  • 1.4 分类可以扩展系统自带的的类功能

    • (1)给NSObject增加分类会影响到所有的类,所有一定要谨慎小心
    • (2)不能在分类中定义与原有类同名方法,分类之间也不可以有同名的方法
    • (3)如果在分类中增加一个与原有类同名的方法,那么分类中这个方法会覆盖原有类的方法(哪怕没有导入过这个分类)
    • (4)多个分类中如果有相同的方法,最后编译分类的方法

2、类扩展(在ui中封装某个控件用的比较多)

  • 2.1 类扩展的作用:
    • 一般定义在.m文件中,为类增加私有的属性和方法(私有的属性和方法,类外不能使用,也不能被继承)
  • 2.2 步骤:

    • (1)可以通过增加一个文件(只有.h文件)的方法(不建议)
    • (2)直接在.m文件中写一个@interface 类名 (),括号中不要有任何内容,在.m 文件中表示只能是私有的(建议)

3、类扩展与分类的区别:

  • 分类:
    • 为原有类增加方法,能被继承和外界使用,用过增加一个category文件(一个.h文件一个.m文件)的方法使用,扩展原有类的方法,不能增加成员变量
  • 类扩展:
    • 为类增加私有的成员变量和方法。
  • 分类的@interface的括号中有内容,在类扩展中没有

4、分类和继承的区别:

  • 1.类别是对方法的扩展,不能添加成员变量。继承可以在原来父类的成员变量的基础上,添加新的成员变量
  • 2.类别只能添加新的方法,不能修改和删除原来的方法。继承可以增加、修改和删除方法。
  • 3.类别不提倡对原有的方法进行重载。继承可以通过使用super对原来方法进行重载。
  • 4.类别可以被继承,如果一个父类中定义了类别,那么其子类中也会继承此类别。

分类(类别,category)与类扩展

标签:类的成员   通过   category   基础   头文件   删除   自己   访问   setter   

原文地址:https://www.cnblogs.com/CH520/p/10727237.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!