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对象帮忙处理。
  • 相关阅读:
    身份证号码的秘密
    SQL Server中的DATEPART函数的使用
    VS2010+Visual Assist X
    Log4Net使用指南
    JScript中的prototype(原型)属性研究
    使用Transaction访问数据库(C#,TransactionScope,.NET 2.0)
    C# 中奇妙的函数–7. String Split 和 Join
    LinqToSQL实例参见
    得到当前网址的域名 ASP.NET
    oracle中delete、truncate、drop的区别
  • 原文地址:https://www.cnblogs.com/liumu/p/5236627.html
Copyright © 2011-2022 走看看