• OC基础:类的扩展.协议 分类: ios学习 OC 2015-06-22 19:22 34人阅读 评论(0) 收藏


    //再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用.

    类的扩展:为类添加新的特征(属性)或者方法

    对已知类:

    1.直接添加

    2.继承(在其子类中添加实例变量和方法)

    3.使用extension(对私有方法和私有属性的扩展(未在.h中申明的方法就是私有方法))

    //   extension

    //  一般我们把类的延展直接写在类的.m文件中

    //  extension 对私有方法和私有属性的扩展(未在.h中申声的方法)

    //  对已知类扩充私有方法,选择 Objective - C file

    //  使用时要把头文件引入,类的延展里可以添加类的实例变量


    对未知类:

    category 分类,类名,为没有源代码的类添加方法,不能添加实例变量


    总结:extension category

    1.extension为已知类添加私有属性和私有方法.category为没有源代码(未知类)的类添加方法.

    2.extension可以添加实例变量(属性),category不能添加实例变量.

    3.extension文件可有.h文件, category同时生成一对.h.m文件

    4.extension一般不写代码,写在类的.m文件

    总结:  category    subclass(子类)

    1.category只能为类添加方法,subclass既能为类添加方法又能添加实例变量

    2.category新添加的方法成为类的一部分,能被子类继承,subclass新添加的方法只有子类才有,父类不具有

    3.category使用原始类的实例(-)或者原始类的调用方法(+),subclass只有子类才能使用

    -------------------------------------Protocol  协议-----------------------------------------

        只要遵守了协议即可成为代理

      代理:自己不想干的事情让比人去做,别人充当的就是代理

    如果一个类想要遵守一个协议,直接在.h文件中的父类后加<协议名>在协议里面,写必须遵守的方法和可选择遵守的方法

    如:

    @protocol BoyfriendProtocol <NSObject>

    @required   //必须实现的方法

    -(void)makeMoney;

    @optional  //可选择的实现

    -(void)cook;   //做饭

    -(void)clean;  //清洁

    -(void)funny;  //幽默

    @end




    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    LeetCode First Bad Version (二分查找)
    LeetCode Permutations II (全排列)
    LeetCode Permutations (全排列)
    LeetCode Minimum Path Sum (简单DP)
    LeetCode Binary Tree Postorder Traversal(数据结构)
    LeetCode Sort Colors (技巧)
    邹忌
    参数传递
    父子窗体返回值与互操作
    其他数据库连接
  • 原文地址:https://www.cnblogs.com/shaoting/p/4619815.html
Copyright © 2020-2023  润新知