iOS-Category、Extension

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

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一起形成了一个完整的类。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容