UI类的扩展

如何对一个类进行扩展呢?

        objective-c提供了3种方式:

        Category(类目) , Extension(延展) , Protocol(协议)

1.类目

         允许为一个已存在的类添加一些方法而不用子类化该类,也不需了解其细节.可以给一个内建的对象添加方法

(1)类目的文件名         

         如果类目所在文件只有类目一个类,可对这个类取名为类名+类别名,如NSString+Second,这样也能更清楚的标识该文件的内容.

(2)类目的声明:

         圆括号中为类别名称     意思为向NSString类中添加一个名称为Second的类别    
            
         @interface NSString (Second)

          - (void)sayHi:(NSString *)hi;

         @end


(3)类目的实现

         @implementation NSString (Second)

          - (void)sayHi:(NSString *)hi

          {

                 NSLog(@"self = %@",self);

                 NSLog(@"hi = %@", hi);

          }

         @end

(4)类目的作用

          1.将类的实现分散到多个不同的文件中

                 多个类目声明放在同一个.h文件中,将实现放入多个.m文件中

          2.使用类目创建对私有方法的前向引用

                 为类创建私有方法

          3.像对象添加非正式协议

(4)类目的局限性

                1.无法向类目中添加新的实例变量,类别没有位置容纳实例变量.

           2.名称冲突,即当类别中的方法与原始类方法名称冲突时,类别具有更高的优先级.类别方法将完全取代初始方法从而无法再使用初始方法.无法添加实例变量的局限可以使用字典对象解决.


2.延展

(1)概述

         有些方法我们不希望被外部类调用甚至知道,所以我们就会用到延展这个特性

(2)延展的使用

           例如:

                 Person类 .h文件

            

           @interface Person :NSObject

            - (void)showTouchView;

           @end

                Person类 .m文件

           

            @interface Person ()

            - (void)showTouchView;

           @end

           如果我们希望showTouchView这个方法只能被Person类调用,其他的外部类都不能调用,我们需要

    把该方法写到Person类对应的.m文件中.类名后要加括号.

3.协议

(1)概述

         协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合. 两个类进行通讯,用协议比较方便

         分为@interface定义的非正式协议和@protocol定义的正式协议.


           




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值