zoukankan      html  css  js  c++  java
  • OC 类别与扩展(匿名类别)

    OC 类别与扩展(匿名类别)


    类别(Categroy):

    又称为扩展类,在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调用原始方法,这里与继承不同。

    类别文件名 = 原类名 + 类别名

    类别的格式:
    @interface 原类名 (类别名)

    在类别中添加 @property
    只做了set/get的声明,没有实现,更不会生成成员变量。

    类别的作用:

    ①为现有的类添加新方法;
    ②将类的实现分散到多个不同文件或多个不同框架中(把一个大的类按功能划分成几块,便于维护);
    ③通过替换现有类中的方法,修正现有类(没有源码文件的情况下)的功能或错误

    类别的局限性
    ①无法向现有的类中添加新的实例变量(类别没有位置容纳实例变量);
    ②方法名称冲突,即类别中的新方法的名称与现有类中方法名称重名,类别具有更高的优先级,类别中的方法将完全取代现有类中的方法(再也无法访问现有类中的同名方法)。

    @interface UIColor (ChangeColor)
    
    @end
    
    @implementation UIColor (ChangeColor)
    
    @end
    

    扩展:

    可以在类扩展中声明属性和实例变量。
    类扩展声明必须在 @implementation在实现。
    所以类扩展的成员变量,方法,都不能被外部方法访问。

    @interface ViewController (){
        NSInteger _age;
    }
    
    - (void)test;
    
    @end
    
  • 相关阅读:
    链表习题(2)-一个集合用带头结点的单链表L表示,编写算法删除其值最大的结点。
    ubuntu14安装
    poi多sheet练习
    vmware虚拟机网络模式-仅主机模式
    vmware虚拟机网络模式-NAT模式
    vmware虚拟机网络模式-桥接模式
    IntelliJ IDEA 创建maven
    IntelliJ IDEA
    冒泡
    Java泛型 通配符? extends与super
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/5483350.html
Copyright © 2011-2022 走看看