Objective-c 代理模式(delegate)

来源:互联网 发布:免费预算软件 编辑:程序博客网 时间:2024/05/01 07:52


很久没有写博客了,因为这段时间一直在为找工作的事情准备。


对于软件开发的很多模式 一直都是一知半解 也没有深入的了解 毕竟学校里面接触到的有限。今天刚好用到了代理模式 还是写下来给大家分享一下 让大家好理解一点。


现在你要租房子,但是你每天都要上班没有时间而且也没有渠道了解房源,于是你找到了一个房屋中介,委托他帮你租一间房子。


我们就可以看到这样的一个场景。于是就有了:person.h

#import <Foundation/Foundation.h>@class Agent;@interface Person : NSObject@property(nonatomic,copy)NSString* name;@property(nonatomic,assign)id<FindHouse> delegate;-(id)initWithName:(NSString*)name withDelegate:(id<FindHouse>) delegate;-(void)findHouse;@end


person拥有一个agent的对象 有一个findHouse的方法 但是他不能自己去完成 所以在findHouse里面需要委托Agent去帮他租房子。

而person需要Agent帮他完成的事情 我们就需要定义一个protocol 


#import <Foundation/Foundation.h>@protocol FindHouse<NSObject>@required-(void)lookingForApartment;@end

这个protocol就是委托协议 lookingForApartment方法就是需要agent去帮助person完成的工作。所以毫无疑问 agent应该实现这个protocol里面的方法。



而最终person自己只需要调用自己无法完成的findHouse方法 就能够 将这件事情委托给agent去帮助他完成。

-(void)findHouse{        [self.delegate lookingForApartment];    }



这就是我理解的delegate。也许表述有不清楚的地方 欢迎大家指正。


0 0
原创粉丝点击