Delegate在iOS开发中随处可见,Delegate是一种功能强大的软件架构设计理念,它的功能是程序中一个对象代表另一个对象,或者一个对象与另外一个对象协同工作(如小明喜欢一个女孩如花,却苦于没有如花的联系方式,于是叫好兄弟小东去拿如花联系方式,小东同学一天后返回结果给小明,....)。小明能否成功追到如花,小东在其中又做了些啥事,下面一步步分解。

1.创建一个Delegate(通过protocol)

#import <Foundation/Foundation.h>
@protocol PhoneNumberDelegate <NSObject>
@required
- (NSString *)goddessPhoneNumber;
@end

2.声明一个Delegate(小明)

@interface Student : Person <StudentProtocol>

@property (nonatomic, assign) id<PhoneNumberDelegate>delegate;
- (id)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age;
@end

3.实现委托代理方法(小东)

#import "Person.h"

@implementation Person
@synthesize name = _name,sex = _sex;
@synthesize age = _age; - (NSString *)goddessPhoneNumber {
NSLog(@"正在火速赶往如花家中,向如花妈妈打探如花的号码... 5分钟拿到了. 如花的号码13888888888");
return @"13888888888";
}
@end

4.设置委托代理(小明->小东),并调用代理方法

#import "AppDelegate.h"
#import "Person.h"
#import "Student.h" @interface AppDelegate ()
@end @implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { Student *xiaoMing = [[Student alloc] init];
Person *xiaoDong = [[Person alloc] init];
//设置委托代理
xiaoMing.delegate = xiaoDong;
//执行委托代理方法
NSString *phoneNumber = [xiaoDong goddessPhoneNumber];
//保留女神的号码
xiaoMing.goddessPhoneNumber = phoneNumber;
[xiaoDong release];
[xiaoMing release]; return YES;
}
@end

  

Delegate就是这么简单好用,小明如愿拿到了如花的号码。

2015-08-10 21:20:56.516 Attendance[56285:1842177] 正在火速赶往如花家中,向如花妈妈打探如花的号码... 5分钟拿到了. 如花的号码13888888888

2015-08-10 21:20:56.517 Attendance[56285:1842177] 小明终于拿到了如花的号码:13888888888

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4719244.html

最新文章

  1. Elong App 性能测试分享
  2. linux查看负载
  3. ELKstack搭建
  4. Java中快如闪电的线程间通讯
  5. win8安装tfs2010提示未启用iis6.0未启用兼容模式需要静态内容组件
  6. Java设计模式——策略模式
  7. android连接打印机
  8. MySql思维导图
  9. Angular4 构建,部署,多环境
  10. phpStudy 5.5n +zendstudio12.5+xDebugger的配置
  11. dom4j解析xml字符串实例
  12. Win7 VS2015 x64 MASM汇编语言编写DLL文件
  13. 使用RMS API 自定义Office(Word、Excel、PPT)加密策略
  14. python全栈开发day14--内置函数和匿名函数
  15. 在线html编辑器
  16. 什么是wsgi,uwsgi,uWSGI
  17. iOS xcodebuile 自动编译打包ipa
  18. 多媒体文件格式之MP4
  19. 土办法 填充NAS空间
  20. Lifyray笑傲江湖之API总结TextUtil

热门文章

  1. CF1336C Kaavi and Magic Spell
  2. 洛谷P1771 方程的解
  3. 一个简单的wed服务器SHTTPD(9)————main函数文件,Makefile,头文件
  4. MYSQL数据库配置安装、重置密码以及工具连接
  5. Java——理解面向对象
  6. [译]ANDROID 11: BETA 计划
  7. Elasticsearch系列---Term Vector工具探查数据
  8. Spring官网阅读(十一)ApplicationContext详细介绍(上)
  9. shell命令之巧用cut
  10. Mysql常用sql语句(13)- having 过滤分组结果集