iOS-Class Extension(类扩展)

Class Extension的使用看起来很像一个匿名的Category,所以Class Extension也被开发者称之为扩展、延展、匿名分类。

但是Class Extension和Category几乎完全是两个东西。

Class Extension不但可以声明方法,还可以声明属性、成员变量,而Category无法声明成员变量。

Category拥有自己的.h文件和.m文件,但Class Extension主要存放在主类的.m文件中,也可以存放在.h中,只是主类要使用的时候需要导入该.h文件。

Class Extension在编译阶段就会将定义的成员变量、属性、方法等直接合入主类,而 Category 在程序启动 Runtime Loading 时才会将属性和方法合入主类。

Class Extension其实就是主类的一部分。

Class Extension主要用于声明私有方法,私有属性,私有成员变量。

在Class Extension声明私有属性时,会自动生成_成员变量、setter和getter方法。

而Category为类添加属性,需要手动添加该属性的setter和getter方法。

我相信以下的写法都不陌生,或者熟悉到不能再熟悉了。 

//Class Extension
@interface View () //括号中可以写名字,用于分类管理Extension
{
    NSString *_str;//私有成员变量
}
//私有属性
@property(nonatomic, strong) UIButton *button;

@property(nonatomic, assign) BOOL changeColor;

//私有方法
- (void)print;

@end
扫描二维码关注公众号,回复: 5888123 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_36557133/article/details/86507531