Objective-c 代理模式(delegate)


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


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


现在你要租房子,但是你每天都要上班没有时间而且也没有渠道了解房源,于是你找到了一个房屋中介,委托他帮你租一间房子。Objective-c 代理模式(delegate)_第1张图片


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

#import 
@class Agent;

@interface Person : NSObject
@property(nonatomic,copy)NSString* name;
@property(nonatomic,assign)id delegate;


-(id)initWithName:(NSString*)name withDelegate:(id) delegate;
-(void)findHouse;
@end


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

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


#import 

@protocol FindHouse

@required
-(void)lookingForApartment;

@end

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



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

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



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


你可能感兴趣的:(Objective-C笔记)