iOS-Class Extension(类扩展)

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

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

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

Category拥有自己的.h文件和.m文件,但Class Extension主要存放在主类的.m文件中,用于隐藏私有属性和方法,当然也可以存放在.h中,用于公共属性和方法分类。

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

所以Class Extension其实就是主类不可分割的一部分,你要添加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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值