12-延展Extension

1. 延展: Extension
1). 是1个特殊的分类. 所以延展也是类的一部分.
2). 特殊之处:
a. 延展这个特殊的分类没有名字.
b. 只有声明没有实现.和本类共享1个实现.
2.延展的语法
语法;
@interface 本类名 ()

@end
没有实现. 和本类共享1个实现.
3.为类添加延展的步骤
只有1个.h文件. 文件名称: 本类名_取得文件名.h
这个文件中只有延展的声明.
@interface Person ()
@end
4. 延展的基本使用.
1). 延展的本质是1个分类. 作为本类的一部分.
只不过是1个特殊的分类
没有名字.
2). 延展只有声明,没有单独的实现. 和本类共享一个实现.
5. 延展和分类的区别
1). 分类有名字.延展没有名字 是1个匿名的分类.
2). 每1个分类都有单独的声明和实现. 而延展只有声明 没有单独的实现 和本类共享1个实现,
3). 分类中只能新增方法. 而延展中任意的成员都可以写.
4). 分类中可以写@property 但是只会生成getter setter的声明.
延展中写@property 会自动生成私有属性 也会生成getter setter的声明和实现.
6. 延展的应用场景.
1). 要为类写1个私有的@property.
生成getter、setter方法只能在类的内部访问 不能在外部访问.
其实,我们可以想: @property生成私有属性、生成getter setter的实现,不要声明.
2). 延展100%的情况下不会独占1个文件. 都是将延展直接写在本类的实现文件中.
这个时候,写在延展中的成员,就相当于是这个类的私有成员.只能在本类的实现中访问.
外部不能访问.
3). 什么时候使用延展?
当我们想要为类定义私有成员的时候,就可以使用延展. 将延展定义在这个类的实现文件中.
如果想要为类写1个真私有属性,虽然我们可以定义在@implementation之中.但是不要这么写 这样很不规范.
写1个延展.将这个私有属性定义在延展中.
如果要为类写1个私有方法,建议将声明写在延展中, 实现写在本类的实现中. 提供代码的阅读性
如果想要为类写1个私有的@property 就直接写在延展就可以了.
4). 延展天生就是来私有化类的成员的.
如果类的成员只希望在类的内部访问,那么就将其定义在延展中.
如果类的成员允许被外界访问 定义在本类的@interface中.




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值