美文网首页
分类(Category)与类拓展(Extension)

分类(Category)与类拓展(Extension)

作者: 拉布拉熊 | 来源:发表于2018-05-22 10:05 被阅读0次

    分类(Category)

    1.分类(Category)是什么?

    分类是oc特有的语法,表示指向分类的结构体指针。分类只能给类增加方法,不能给类增加成员变量。

    结构体指针的定义:

    Category 是表示一个指向分类的结构体的指针,其定义如下:

    typedefstructobjc_category*Category;

    structobjc_category{

     char*category_name OBJC2_UNAVAILABLE;// 分类名

    char*class_name OBJC2_UNAVAILABLE;// 分类所属的类名    structobjc_method_list*instance_methodsOBJC2_UNAVAILABLE;// 实例方法列表

    structobjc_method_list*class_methodsOBJC2_UNAVAILABLE;// 类方法列表structobjc_protocol_list*protocolsOBJC2_UNAVAILABLE;// 分类所实现的协议列表

    }

    通过分类的结构体我们可以发现,结构体里面没有“属性列表”,所以不能给类增加实例变量,但我们依然可以在分类中使用@property声明一个属性,但只是声明,并没有生成实例变量和存取方法(setter/getter)。基于oc动态语言的特性,我们可以在运行时动态的生成setter/getter方法,生成属性(注意:并没有生成成员变量/实例变量) 

    2.分类的作用?

    在运行时,动态的给类增加方法。

    相关文章

      网友评论

          本文标题:分类(Category)与类拓展(Extension)

          本文链接:https://www.haomeiwen.com/subject/mnethftx.html