zoukankan      html  css  js  c++  java
  • IOS ——OC——  协议的使用总结

    .协议(定义了一组方法让其他的类实现)
    @required :    定义的是必须实现的方法
    @optional : 定义的是可选实现的方法
     
    (1).协议声明了可以被其他的类实现的方法。协议本身不会去实现。
     
    (2)协议不是类,只是一个其他对象可以实现的接口。

    定义一个协议:

    #import <Foundation/Foundation.h>
    @protocol MarryProtocol <NSObject>//定义一个结婚协议,结婚协议也可以继承其它的协议。
    @required   //必须遵守的协议,在遵守MarryProtocol协议的类的.m文件中去实现里边的方法。
    - (void)washClothes;
    - (void)cook;
    @optional  //可选的协议
    - (void)makeMoney;
    @end

    代理(委托)模式:自己有需求,但是让别人去做。

    定义一个Men类

    #import <Foundation/Foundation.h>
    #import "RoomService.h" 
    @interface Men : NSObject
    @property(nonatomic,retain)NSString * name;
    @property(nonatomic,assign)id<MarryProtocol> mate;//定义一个代理
    -(id)initWithName:(NSString *)name;
    -(void)needEat;
    @end

    定义一个Women类

    #import <Foundation/Foundation.h>
    #import "MarryProtocol"
    @interfaceWomen : NSObject <MarryProtocol>  //遵守协议
    @property(nonatomic,retain)NSString * name;
    -(id)initWithName:(NSString *)name;
    @end

    在Men的实现里边

    -(void)needEat
    {
        [self.mate  cook];
    }

    在Women的实现里边有一个方法

    -(void)cook

    {

          NSLog(%@"wonmen正在做饭");

    }

    主函数里边

    men.mate = women;

    [men needEat];

    打印出:wonmen正在做饭

    4.协议也可以写在一个类里边,用到的时候引入类的头文件就可以。

    感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
  • 相关阅读:
    怎样使用Chrome模拟手机浏览器測试移动端网站
    [Erlang危机](5.1.3)进程
    Oracle ErrorStack 使用和阅读具体解释
    动态规划之整齐打印
    struts2+Oracle实现管理员查看用户提交的意见功能
    hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)
    2014牡丹江——Known Notation
    诗云:静观天下
    QQ欢乐斗地主心得体会 (三):高倍场攻略
    QQ欢乐斗地主心得体会 (三):高倍场攻略
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/4983889.html
Copyright © 2011-2022 走看看