zoukankan      html  css  js  c++  java
  • 类目,延展,协议的基本概念

    Catgory(类目/分类
        1.分类是给原有类添加方法,它只能添加方法,不能添加属性(成员变量)
        2.分类中定义@property,只会生成setter/getter方法的声明,没有方法的实现以及私有变量。
        3.分类中的方法不能和本类的方法名相同,否则会有警告,而且调用的时候会优先调用分类的方法,即覆盖本类的方法。  
        4.分类的方法和实现分开,一对多,1个.h文件对应多个.m文件,典型的分散实现;
    延展(Extension)
     1.延展为类创建私有方法,一个.m文件对应多个.h文件,分配权限时可以用(想用哪一个,就导入哪一个头文件)
    协议(protocol)
    1.协议相当于其它语法里的接口(抽象类)它只有声明没有实现。它可以声明一些必须实现的方法(默认的是必需实现required),也可以声明一些不一定实现的方法(@ optional)协议是谁遵循谁实现。一个类可以遵循多个协议,一个协议也可以遵循其他协议(多继承)。
    2.判断对象是否遵循协议confromsToprotocol,是否实现协议:respondsToSelector.
    protocol和继承的区别:1.继承之后默认就有实现,而property只有声明没有实现。2.相同类型的类可以用继承,但是不同类型的类只能使用property。3.property可以用于存储方法的声明,可以将 多个类中共同的方法抽取出来,以后让这些类遵守协议即可。
    3.协议的的应用场景:类型的限制,可以将协议写在数据类型的右边,明确的标注如果想给该变量赋值,那么该对象必须遵守某个协议。
    Persong<protocol> *w = [Person new];@property (strong nonatomic) Wife<protocol> *wife;类型限定写在数据类型的右边
    1.当A对象想监听B对象的一些变化是,可以使用代理设计模式2.当B对象发生一些事情,想通知A对象的时候,可以使用代理模式。当A对象无法处理某些事情时,想让B对象帮忙处理。
  • 相关阅读:
    QML中的states用法
    mako的namespace(四)
    Dynamics CRM2013 按钮自定义开发工具 Ribbon Workbench 介绍
    CRM 导入导出附件上传大小限制控制
    插件(plugin)调试技巧及注意事项
    Dynamics CRM2013 自定义开发工具 Dynamics XRM Tools 介绍
    传递正能量,拒绝负能量!加油
    让人无语的编程环境
    转NET(C#):线程本地存储(ThreadLocal Storage)之ThreadStatic, LocalDataStoreSlot和ThreadLocal<T>
    转javaThreadLocal
  • 原文地址:https://www.cnblogs.com/liumu/p/5236627.html
Copyright © 2011-2022 走看看