• OC语法10——@protocol协议,


    参考资料:博客

    @protocol,协议:

      OC中protocol的含义和Java中接口的含义是一样的,它们的作用都是为了定义一组方法规范。

      实现此协议的类里的方法,必须按照此协议里定义的方法规范来。

      格式:CO中定义协议用@protocol和@end成对使用:@protocol   协议名   <NSObject> .... @end

        另外,OC协议里的方法并不一定要全部实现,@required(必须实现)。@options(可选实现)。若不写这两个关键字,则默认是必须实现的。

        实现协议用尖括号。注意:某类实现协议,是在该类的.h文件里的(@interface Student :NSObject <PersonDelegate>)

        协议是为了定义方法的规范,注意,只是方法的规范。不能定义成员变量等。

     

    Person.h:    协议PersonDelegate就写在Person的声明文件里,没问题。

    @protocol PersonDelegate <NSObject>  //任何一个协议都要实现元协议NSObject
    
    - void run();
    - void sleep();
    
    @end 
    
    
    @interface Person : NSObject <PersonDelegate>   //Person继承根类NSObject,并实现协议PesonDelegate
    
    @end

    Person.m:

    #import "Person.h"  //Person的声明和PersonDelegate协议都在里面
    
    @implementation Person
    
    - void run()
    {
        NSLog(@"跑!");
    }
    
    - void sleep()
    {
       NSLog(@"睡!"); 
    }
    
    @end

     

    协议在iOS开发中的应用:

      在iOS开发中,对UI按钮的操作通常使用代理模式。

      所谓代理,也就是说按钮(Button)被点击后响应动作由”代理“(Listener)帮它完成。代理作为Button类的一个属性

      那一个类怎么成为Button的代理呢?它又不知道该Button有哪些响应动作。

      所以,若要成为某Button的代理,则只需实现一个协议(ButtonDelegate),该协议里定义了Button的响应动作的规范。

      (既然你是我的代理,你要帮我实现相应动作,你就要实现这些规范方法。)

      

    温馨提示:如果还不能明白,请参考上面的博客链接。

  • 相关阅读:
    串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)
    串口通讯接收数据的处理
    在C#程序设计中使用Win32类库
    C# Mutex对象学习经验
    我眼中的C# 3.0 Written by Allen Lee
    利用C#鼠标拖动TreeView节点
    richtextbox内文字自动滚动的例子
    在十六进制字符串与数值类型之间转换 C# 编程指南
    如何:指定符号位置和加载行为
    杂记20110321
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4297548.html
Copyright © 2020-2023  润新知