A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© z276698840 中级黑马   /  2016-3-26 20:34  /  938 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 延展: Extension
    一句话解释: 是1个特殊的分类.所以,延展与分类一样是类的一部分.
    特殊的地方:
    1). 延展是1个匿名的分类,没有名字.
    2). 延展只有声明没有实现.和本类共享1个实现.


2. 延展的声明.

    @interface 本类名 ()

    @end

    延展没有单独的实现.和本类共享1个实现
    将方法声明写在延展中 将方法的实现写在本类的实现中.


3. 如何添加1个延展.

    延展只有1个.h文件. 没有.m文件. 因为延展没有单独的实现.和本类共享1个实现.

   

4. 延展的使用注意.

    1).分类中只能新增方法.可以写@property但是只会生成getter setter的声明.

    2).延展中可以写属性.
       也可以写@property. 会自动的生成私有属性,getter setter的声明. getteer setter的实现.
       方法声明肯定也是可以的.


5. 延展的作用: 肯定不是来把1个类分为多个模块的.因为实现和本类共享1个实现.
               也肯定不是来扩展1个类的.因为实现和本类共享1个实现.你新增1个方法 方法的实现还要写在本类的实现中.

    1). 思考:
        要为1个类写1个私有的@property.
        什么时候私有的@property?
        生成的getter setter方法要是私有的.


    2). 延展.

        100%的情况下,延展不会独占1个头文件.
        延展都是写在类的.m文件中.

        写在延展中的成员,都是这个类的私有成员,只能在这个类的内部访问.无法在外部访问.


    3). 延展天生就是来:私有化类的成员的.

        如果类中有成员需要被私有化.

        属性需要被私有化:
        a. 在本类的@interface中@private
        b. 在本类的@implementation中.
        c. 写在延展中.

        必须将其写在延展中.


        方法需要被私有化:
        只写实现不写声明.
        建议: 私有方法仍然要写声明和实现,只不过声明写在延展中.


        @property需要被私有化.
        把@property写在延展中.


    4) .如何使用.

        如果类中有私有成员, 将这些私有成员全部的写在延展中.

        私有属性,
        私有方法的声明.
        私有@property.
'
        写在延展中的成员,只能在类的内部访问.不能在外部访问.


求打赏

1 个回复

倒序浏览
很好的总结
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马