委托代理(degegate),顾名思义,把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。

反映到程序中,首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么。
委托机制是一种设计模式,在很多语言中都用到的,这只是个通用的思想,网上会有很多关于这方面的介绍。
那么在苹果开发过程中,用到委托的程序实现思想如下,我主要拿如何在视图之间传输信息做个例子。
譬如:在两个页面(UIIview视图对象)实现传值,用委托(delegate)可以很好做到!
方法:
类A
@interface A:UIView
        id transparendValueDelegate;
       @property(nomatic, assign) id transparendValueDelegate;
@end

@implemtion A
@synthesize transparendValueDelegate
-(void)Function

      NSString* value = @"hello";
      //让代理对象执行transparendValue动作
      [transparendValueDelegate transparendValue: value];
}
@end

类B
@interface B:UIView
      NSString* value;
@end

@implemtion B
-(void)transparendValue:(NSString*)fromValue
{
      value = fromValue;
      NSLog(@"the value is %@ ",value); 
}
@end

//下面的设置A代理委托对象为B
//在定义A和B类对象处:

A* a = [[A alloc] init];
B* b = [[B alloc] init];
a. transparendValueDelegate = b;//设置对象a代理为对象b

这样在视图A和B之间可以通过委托来传值!

下面这个例子委托有两类:
1、一个视图类对象的代理对象为父视图,子视图用代理实现让父视图显示别的子视图
2、同一父视图下的一个子视图为另一个子视图的代理对象,让另一个子视图改变自身背景色为给定的颜色
===============================================
规范格式如下:
@protocol TransparendValueDelegate;

@interface A:UIView
id< TransparendValueDelegate > m_dTransparendValueDelegate;
@property(nomatic, assign) id m_dTransparendValueDelegate;
@end


//代理协议的声明
@protocol TransparendValueDelegat<NSObject>
      -(void)transparendValue:(NSString*)fromValue;
@end

IOS开发中委托代理(degegate)的理解和使用示例相关推荐

  1. 如何深入理解 iOS 开发中的锁?

    摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知识点(三):Lock.本文也不 ...

  2. 理解:iOS开发中锁的实现原理

    摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知识点(三):Lock.本文也不 ...

  3. 深入理解 iOS 开发中的锁

    深入理解 iOS 开发中的锁 摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知 ...

  4. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  5. iOS开发UI篇—iOS开发中三种简单的动画设置

    [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要"参与到"动画中 [UIView beginAnimations: ...

  6. iOS开发中屏幕旋转(二)

    Morris_ 2019.04.11 前面有总结过一些在开发中遇到的屏幕旋转的基础知识. 一.设置应用支持的转屏方向 设置方式 00x1 在TARGET->General->Deploym ...

  7. iOS开发中的Web应用概述

    为了更好的阅读体验,建议阅读原文 插播广告 -- 几十行代码完成资讯类App多种形式内容页 HybridPageKit :一个针对资讯类App高性能.易扩展.组件化的通用内容页实现框架. 想和我一起全 ...

  8. iOS开发中的锁实现猜测

    本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知识点(三):Lock.本文也不会详细 ...

  9. [转] iOS --- 自释放在iOS开发中的应用

    转载自庞海礁的个人空间. 今天,跟大家聊聊"自释放"思想在iOS开发中的应用,何为"自释放"?可以简单的理解为对象在生命周期结束后自动清理回收所有与其相关的资源 ...

最新文章

  1. 深入剖析ConcurrentHashMap(1)
  2. WinForm资源文件使用
  3. 精致全景图 | 程序是如何运行起来的
  4. iOS 字典与字符串之间的互转
  5. Angular self study 2 - compile how is hello {{ name }} compiled
  6. 深入理解Three.js(WebGL)贴图(纹理映射)和UV映射
  7. html 隐藏_HTML实战篇:纯css制作二级横向以及竖向菜单导航
  8. 手把手教你学51单片机_第四、五章
  9. MIMO技术杂谈(一)浅谈分集与复用的权衡_akala啦_新浪博客
  10. Qt开发 之 抓取崩溃信息(读这一篇就够了)
  11. html如何固定字号,css怎么控制字体大小?
  12. 热温冷冰,数据存储需要全生命周期管理
  13. 【大数据实战】flume 数据采集
  14. Tomcat下log4j日志文件 配置过程
  15. linux ora-12162,ORA-12162: TNS:net service name is incorrectly specified
  16. 推荐系统:综述【一、基于用户信息】【二、基于物品/内容(CB)】【三、协同过滤(CF):①、基于近邻(User-CF、Item-CF);②、基于模型(隐语义模型/LFM:SVD、pLSA、LDA)】
  17. 怎么使用CSDN markdown编辑器写博客
  18. latex 中文正文双栏模板_LaTeX学习指南(一)
  19. android中百度地图的使用(一)
  20. POWER BI:门户网站品牌包管理(翻译)

热门文章

  1. 大头贴边框html,拍大头贴.html · NFUNM104/API_Graduation - Gitee.com
  2. #bss段,data段和text段
  3. Windows Server 2016快速入门部署远程桌面服务
  4. 论文翻译(15)--Thermal Face Recognition Under Temporal Variation Conditions
  5. 【基础教程】Matlab实现指数威布尔分布
  6. 无法删除文件的解决方法
  7. CTRL、SHIFT、ALT及WIN键的功能
  8. 导购行业未来几年的发展走向更加趣味时尚
  9. Java中级面试题及答案整理
  10. Android 上下文菜单