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