一篇文章 学会 iOS中的 代理(delegate) 设计模式

原创 2014年05月15日 17:42:25

            代理设计模式,真是挺耐人寻味的,感觉很让人捉摸不透又感觉很有趣的东西!因为原本捉摸不透的代码,方法,披上代理的外衣后,就很有道理,很有意思了!

            各种设计模式,让本来很死板的代码变得灵活多变,各种功能可以在大大简化代码的情况下实现。大大方便了编程工作。

                        来一个简单的代理实现案例:

          这个代理运用的地方是在一个UI界面中(类似新浪手机客户端的界面),点击自定义tabBar中自定按钮,以达到切换窗口控制器的目的。

         1.首先要是要明确谁要做谁的代理,对象A如果是对象B的代理,谁是对象A,谁是对象B。

          这里,我们是让控制器作为自定义tabBar的代理。

          2. 代理中,需要记住的关键是在发出代理请求的类(A)中声明代理人(B)的实例变量,这样就可以保证A 能通过调用B中B代理的方法来完成B代理的事情,即自己代理给B 的事情。

        废话不多说,直接上代码:

      //这里tabBar发出代理请求,并且声明代理的实例变量(delegate)。

      //通知代理,按钮被点击,如果代理(控制器)实现了代理方法,tabBar就可以调用代理(控制器)中的代理方法来完成控制器代理的事情,即tabBar代理给控制器的事情。

 3.代理模式的关键点:

     A完成一件事,但是自己不能完成,于是他找个代理人B 替他完成这个事情,他们之间便有个协议(protocol),B继承该协议来完成A代理给他的事情。
 
      控制器继承了代理协议,实现代理方法。

iOS中delegate代理对象使用weak

之前不停应用的是assign,本日调试一段代码的时间,发明顺序会crash失落,报错EXC_BAD_ACCESS 经由一番研讨,发明若是应用 @property (nonatomic, assign,...
  • helloworld_junyang
  • helloworld_junyang
  • 2016年03月31日 08:43
  • 1780

ios delegate循环引用

ios delegate循环引用 所有的引用计数系统,都存在循环应用的问题。例如下面的引用关系: • 对象a创建并引用到了对象b. • 对象b创建并引用到了对象c. • 对象c...
  • Tina__March
  • Tina__March
  • 2015年08月24日 21:37
  • 1292

IOS学习之一个示例弄懂代理(delegate)和协议

协议在这里就像中间人的作用,没有这个中间人,就无法”受理代理”。注意代理和协议并不是总要一起实现,只是大部分情况下我们会用协议来辅助实现代理。...
  • pony_maggie
  • pony_maggie
  • 2014年05月12日 22:02
  • 35405

iOS中delegate代理对象使用weak和assign哪个

之前不停应用的是assign,本日调试一段代码的时间,发明顺序会crash失落,报错EXC_BAD_ACCESS 经由一番研讨,发明若是应用 @property (nonatomic, assign,...
  • yishengzhiai005
  • yishengzhiai005
  • 2016年03月24日 21:58
  • 2622

ios代理(Delegate)机制深入学习和探讨

Delegate(代理/委托)在iOS中很常用,似乎很简单,但许多ios编程多年的人对其本质也不太理解,只是按照API的要求,简单使用。本文根据作者的体会,试图简单明了的说清Delegate的本质,以...
  • xotty
  • xotty
  • 2016年09月13日 12:38
  • 358

多层view时delegate为nil的问题解决

问题描述:我在一个tab的DashboardController页面上增加了一个包含两个页面大小的UIScrollView实现左右滑动分页效果,然后在UIScrollView的左右两页都分辨包涵了一个...
  • yjw1007020425
  • yjw1007020425
  • 2016年05月05日 11:23
  • 830

iOS:代理(delegate)理解及使用

子控件需要子控件所在的控制器来帮其做一些事情,此时子控件需要通过代理模式实现.   举例:         控制器OneViewController里有一个子控件叫SubView(自定义View), ...
  • sinat_30993547
  • sinat_30993547
  • 2016年03月29日 00:07
  • 1892

Bug: iOS用xib自定义view,UITextField的delegate没有调用

http://stackoverflow.com/questions/20567251/cant-get-uitextfielddelegate-to-work
  • ouyangtianhan
  • ouyangtianhan
  • 2013年12月17日 14:22
  • 3166

Datasource 与 Delegate的对比

在IOS中常会看到Datasource和Delegate,但是两者有什么区别,很简单。 Datasource是在告诉使用者之前的view中都有什么东西,有什么属性啊,属性的值都是多少,是只关于数据的...
  • naruto900814two
  • naruto900814two
  • 2014年03月10日 13:15
  • 2160

【IOS沉思录】IOS中的协议Protocol与代理Delegate

Protocol和Delegate简介Protocol协议类似于Java中的接口,是一个自定义方法的集合,让遵守这个协议的类去是实现为了达到某种功能的这些方法,与Java接口不同的是协议中可以定义可选...
  • cordova
  • cordova
  • 2016年11月11日 12:09
  • 1547
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一篇文章 学会 iOS中的 代理(delegate) 设计模式
举报原因:
原因补充:

(最多只允许输入30个字)