美文网首页
iOS-Category、Extension

iOS-Category、Extension

作者: GSChan | 来源:发表于2019-10-07 21:05 被阅读0次

    一、分类的使用注意事项:

    1、分类只能增加方法,不能增加成员变量。

        原因:

        Category是运行时决议,因为在运行时,对象的内存布局已经确定,如果添加成员变量会破坏类的内部布局,这对编译性语言是灾难性的。

    2、分类中写property,只会生成方法声明。

    3、分类可以访问成员变量。

    3、如果分类和类出现同名方法,优先调用分类中的方法,原类中的方法则会被忽视。

    4、多个分类中有同名方法,则执行最后编译的文件方法(注意开发中千万不要这么干)。

    5、方法调用的优先级(从高到低)。

    5、1、分类(最后参与编译的分类优先)-->原来类-->父类。

    5、2、先加载原类的+load方法,再加载分类的+load方法,若多个分类,则根据编译顺序加载。

    二、Extension

    1、Extension是类的一部分,和类同时产生、同时消亡。

    2、Extension可以为类添加私有变量、私有方法(相对,可以通过KVC修改变量,通过Runtime调用方法)。

        你必须有一个类的源码才能添加一个类的Extension,所以对于系统一些类,如NSString,就无法添加类扩展

    3、Extension是编译期决议。

    是类的一部分,和类同时产生、同时消亡。

    和头文件的@interface和实现文件里的@implement一起形成了一个完整的类。

    相关文章

      网友评论

          本文标题:iOS-Category、Extension

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