• 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 发表评论
  • 相关阅读:
    Python写的简陋版一对一聊天工具,全双工
    Python函数的循环调用
    Python多进程
    正则表达式
    Python-urllib学习记录
    Android学习笔记8:使用HttpClient接口实现网络通信
    Java抽象类和接口的区别(好长时间没看这种文章了)
    Android笔记:bitmap转换与处理相关工具类,Bitmap与DrawAble与byte[]与InputStream之间的转换
    first work
    Android学习笔记7:使用SQLite方式存储数据
  • 原文地址:https://www.cnblogs.com/cokecoffe/p/2537109.html
Copyright © 2020-2023  润新知