zoukankan      html  css  js  c++  java
  • Objective-C之Category的使用

    Category

    分类相关

    category是OC的特有的语法

     

    // 分类的声明

    @interface ClassName (CategoryName)
    
    NewMethod; //在类别中添加方法
            //不允许在类别中添加变量
    @end
    • ClassName: 需要给哪个类扩充方法
    • CategoryName: 分类的名称
    • NewMethod: 扩充的方法

    // 分类的实现

    @implementation ClassName(CategoryName)
    
    NewMethod
    ... ...
    @end

    ClassName: 需要给哪个类扩充方法
    CategoryName: 分类的名称
    NewMethod: 扩充的方法

    注意:

    1.分类是用于给原有类添加方法的, 它只能添加方法, 不能添加属性(成员变量)

    @interface Person (NJ)
    //{
    //    double _height;
    //}

    2.分类中的@property, 只会生成setter/getter方法的声明, 不会生成实现以及私有的成员变量

    //@property (nonatomic, assign) double height;
    验证方式:在main函数中调用property声明的属性,并且赋值,发现会奔溃

    3.可以在分类中访问所有类中的.h中的属性

    4.原类中和分类中有相同的方法,会调用分类中的方法,也就是说回忽略原类中的方法,所以开发建议,不要在分类写出原类中同名的方法。

    5.如果多个分类中都有和原类中同名的方法,那么调用该方法的时候执行谁由编译器决定,会执行最后参与编译的一个分类。 怎么看分类谁先编译呢?

    所以不建议在分类声明实现很多和原类同名的方法。

    类扩展(Class Extension)

    匿名分类或者匿名扩展:没有名字的分类

    延展类别有称为扩展(Extendsion),是Category的一个特例。

    • 主要的作用:为某个类扩充一些私有的成员变量和方法
      • 写在.m文件中
      • 英文名是Class Extension

    类扩展书写格式

    @interface 类名 ()
    @end

    对比分类, 就少了一个分类名称,因此也有人称它为”匿名分类”


  • 相关阅读:
    ImageView的属性android:scaleType作用
    android程序内存泄漏的原因和解决办法
    如何在Android使用Rest服务从客户端调用webservice
    android系统如何自适应屏幕大小
    使用GitHub进行版本管理
    Android中dp、sp、px的转换和区别。
    软件开发:手机应用程序开发注意事项
    学用MVC4做网站二:2.2添加用户组
    学用MVC4做网站二:2.1浏览用户组
    学用MVC4做网站二:2.4删除用户组
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4931342.html
Copyright © 2011-2022 走看看