zoukankan      html  css  js  c++  java
  • iOS 协议

    一、介绍

      协议是一组预定义的方法,一个类可以选择来实现它们。

      当对象需要与一个或多个对象对话,但是不知道对象的类时,协议特别有用。

      Objective-C中的协议相当于Java中的接口。

      协议在整个Cocoa框架中使用。Objective-C拥有正式的和非正式的协议。正式的协议声明了一组必需的方法,可能还有某些可选的方法。随后,类可以通过实现协议所必需的所有方法来实现该协议。当一个类声明它使用的正式协议时,编译器会检查,确保该类实现了协议所有必需的方法。非正式协议则只是在一个子类头文件中的一个方法声明的列表,一个类可以选择来实现这些方法。

    二、使用

      >采用一个协议的类,必须实现协议的所有必须的方法

      >采用一个协议的类,可以自由的实现或不实现协议的任何可选方法

        

      >类可以实现多个协议,协议也可以实现协议

      >可选和必需的方法分别使用@optional 和 @required指令来标记

      >类通过在类的@interface 行的超类名称之后的一个尖括号中放置字而已的名称,从而声明其采用了该协议。包含了协议声明的头文件,对于采用协议的类的@interface部分,必须是可见的

        

    三、iOS中消息传递模式

      通知:在iOS中由通知中心进行消息接受和消息广播,是一种一对多

      代理:是一种通用的代理模式,iOS中对代理支持的很好,由代理对象,委托者,协议三部分组成

      block:一种回调方法,可将毁掉代码直接写在block代码块中

      target action:通过将对象传递到另一个类中,在另一个类中将该对象作为target的方法来调用该对象方法,从内存角度看与代理类似

      KVO:NSObject的Category -NSKeyValueObserving,通过属性监听的方式来监测某一个值的变化,当值发生变化时调用KVO回调方法

    四、代理设计模式

      代理的基础使用:

        代理是一种通用的设计模式,在iOS中代理模式支持的很好,有特定的语法来实现代理模式,OC语言可以通过@protocol实现协议

        代理由三部分组成:

          协议:用来制定代理双方可以做什么,必须做什么

          代理:根据指定的协议,完成委托方需要实现的功能

          委托:根据指定的协议,制定代理去完成什么功能

         

        在委托方调用代理方法时都需做一个判断,判断代理是否实现当前方法,否则程序崩溃

            

        代理对象只能是弱引用 

        

    五、链接

       http://my.oschina.net/u/2472425/blog/649179

       http://my.oschina.net/zboy/blog/493104

        

  • 相关阅读:
    循环语句的基本使用
    创建一个可拖动的dom元素。
    JavaScript中的callee,caller,call,apply的使用
    两个数组去重的方法。
    利用setTimeout建立能捕捉鼠标多次点击和鼠标长按的事件处理程序。
    document.getElementByClassName()的使用和兼容老浏览器。
    jQuery .data()方法的运用。
    javascript对象的深拷贝。
    未来、
    linux上机作业
  • 原文地址:https://www.cnblogs.com/roxy/p/5687932.html
Copyright © 2011-2022 走看看