分类和扩展有什么区别?

2020/6/25 23:26:06

本文主要是介绍分类和扩展有什么区别?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

分类:

1、通过运行时机制在程序启动时将方法动态添加到方法列表中(编译时不添加,不写方法实现不会有警告) 2、只能添加方法,添加属性只能生成setter、getter,可通过关联对象实现添加属性

拓展:

1、编译时期直接合到原类中 2、可添加实例变量 3、声明的方法没被实现,编译器会报警,因为扩展是在编译阶段被添加到类中

struct category_t {

    const char *name;

    classref_t cls;

    struct method_list_t *instanceMethods; // 对象方法

    struct method_list_t *classMethods; // 类方法

    struct protocol_list_t *protocols; // 协议

    struct property_list_t *instanceProperties; // 属性

    // Fields below this point are not always present on disk.

    struct property_list_t *_classProperties;

    

    method_list_t *methodsForMeta(bool isMeta) {

        if (isMeta) return classMethods;

        else return instanceMethods;

    }

    

    property_list_t *propertiesForMeta(bool isMeta, struct header_info *hi);

};
复制代码

1)类的名字(name)

2)类(cls)

3)category中所有给类添加的实例方法的列表(instanceMethods)

4)category中所有添加的类方法的列表(classMethods)

5)category实现的所有协议的列表(protocols)

6)category中添加的所有属性(instanceProperties)



这篇关于分类和扩展有什么区别?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程