码迷,mamicode.com
首页 > 其他好文 > 详细

[Objective-C] 015_Delegate(委托代理)

时间:2015-08-10 22:06:01      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

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;
    
    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

 

 

[Objective-C] 015_Delegate(委托代理)

标签:

原文地址:http://www.cnblogs.com/superdo/p/4719244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!