zoukankan      html  css  js  c++  java
  • ObjectiveC 协议 简介 +委托的实现

    简单的介绍

    1.1定义协议:

    创建一个.h文件

      1: _MyProtocolName.h
      2: @protocol MyProtocolName <NSObject>
    
    
    
      3: @end 

    注:协议中没有变量;

    <NSObject>是代表在此声明的协议是NSObject协议的衍生协议(不是NSObject类);

    1.2使用协议:

      1: @interface CustomView:UIView<MyProtocolName> 

    代表CustomView遵循我们制定的这个协议,需要实现协议的方法

    1.3用协议修饰变量:

    如果这样定义一个变量:

      1:   id<MyProtocolName>myNewVariable;

    那么myNewVaiable是遵循我们制定的这个MyProtocolName协议的

    如果定义函数时:

      1: - (void) doSomethingWithThisObject: (id<MyProtocolName>) aObject

    那么这个函数的参数是需要遵循我们制定的这个MyProtocolName协议的

    ============接下来看下如何利用协议实现委托=========

    目的:将A的事情委托给B来做
     步骤1.在A中声明协议,即要委托出去的事情(方法)。
     步骤2.A中声明一个委托对象,即要委托给谁去办,用id<协议名字>委托对象名;
     步骤3.比如想让B做A的事情,那么B的interface中要宣布自己遵循A中制定的那个协议。
     步骤4.A调用委托执行那件事情去.即[delegate fun]

    A.h------------------------------------------------

    @protocol Mydelegate//协议的声明

    -(void)Fun;

    @end

    @interface A:NSObject

    {

       id<Mydelegate> delegate;//声明一个委托对象,我们要把事情委托给实现Mydelegate协议的类

    }

    @property(assign,nonatomic) id<Mydelegate> delegate;

    @end

    A.m---------------------------------------------

    @implementation

    -(void)init

    {

        delegate = B;

    }

    -(void)FunToOther

    {

        [delegate Fun];//将消息发送给委托去处理

    }

    @end

    委托对象的实现

    B.h---------------------------------------------

    #import"A.h"

    @interface B:NSObject<MyDelegate>

    @end

    B.m---------------------------------------------

    @implementation

    -(void)fun

    {

        //实现Mydelegate中制定的方法

    }

    @end

    这样的话A就可以委托B去做fun这件事情了。



    Wangkeke 2012-05-05 10:57 发表评论
  • 相关阅读:
    51nod1229 序列求和 V2
    51nod 1228、1258 序列求和
    题解P3711:【仓鼠的数学题】
    伯努利数学习笔记的说...
    题解 P4692 【[Ynoi2016]谁的梦】
    积性函数与卷积
    题解 P5065 【[Ynoi2014]不归之人与望眼欲穿的人们】
    [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?
    [51nod1965]奇怪的式子
    PGCD2
  • 原文地址:https://www.cnblogs.com/cokecoffe/p/2537109.html
Copyright © 2011-2022 走看看