W e S D
0 1

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

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

 

 

posted @ 2015-08-10 21:23  SD.Team  阅读(322)  评论(0编辑  收藏  举报