在学iOS开发的时候,常常遇到Delegate。今晚在hh的帮助下,我终于对它有了比较好的理解。现在,小陈将和各位看官聊聊Delegate。先来讲个故事吧:
害羞的小男生A决定向暗恋的小女生B送花。但由于自己太害羞,他决定请好哥们外向的小男生C帮忙送花。
为此,A和C制定了一个送花的协议。协议中有A想做却做不到的事情——送花。
C无条件答应了。于是C吭哧吭哧地带着玫瑰花送给了B。(至此,delegate已经成功执行)
后话是:这一切都让B看在了眼里,什么?B和C居然好上了。
哦!这是一个悲伤的故事。
我兴致勃勃地把这个故事用代码实现了。
代码中主要有以下文件:
1.ShyBoy类(害羞小男生)
2.OutgoingBoy类(害羞小男生的好哥们外向小男生)
3.GiveFlowersDelegate.h(放有害羞小男生制定的送花协议)
4.main.m(害羞小男生所暗恋的小女生;小女生把故事都看在眼里)
ShyBoy的粉丝们请擦干眼泪,以下是代码编写的主要步骤:
步骤1:制定一个送花的协议,协议中有害羞小男孩想做却做不到的事情——送花。(虽然不自己送花,但害羞小男孩还是要选择花的品种。)(声明协议和协议里的方法。协议里有委托方实现不了的而被委托方实现得了的方法。协议里的方法可以带参数。)
步骤2:害羞小男孩说自己是送花协议的发起者。(委托方声明一个delegate)
步骤3:害羞小男孩所能做的事情是让自己的代理人帮忙送花。害羞小男孩无法真正去送花,但还是能选择花的品种。(委托者调用delegate内的方法)
步骤4:外向小男孩接受送花协议( 被委托者(代理人)设置delegate,以便让委托者调用;)
步骤5:外向小男孩想好怎么送花(被委托者实现Delegate 所定义的方法。)
注:代码编写的步骤不一定要按照1-5.
步骤6:main.m与运行结果。
//delegate常被用于类间的传值。我会继续学习它。
参考文章:
http://leopard168.blog.163.com/blog/static/168471844201307112149221/
代码下载地址:
http://download.csdn.net/detail/ilikeprograming/7372547