代理(委托)设计模式
代理是指一个对象提供机会对另一个对象中的行为发生变化时作出的反应。代理设计模式的基本思想是两个对象协同解决问题,通常用于对象之间的通信。基本特点有:
- 简化了对象的行为,最小化了对象之间的耦合度
- 使用代理,一般来说无需子类化
- 简化了应用程序的开发,既容易实现,又灵活
NSRunloop
概念
NSRunloop
就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用runloop
的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。在应用程序中,不需要创建NSRunloop
对象。因为在主线程(包含其他子线程)系统中会自动创建NSRunloop
对象。如果你需要访问当前线程中的runloop
,可以通过类方法currentRunloop
调用。
中介找房代理设计模式的实现
一、需求分析
- 租客需要找房,委托中介人去找房
- 中介人负责找房
- 协议合同规定了租客与中介人的法律效益
二、代码实现
1、 创建租客Person
类
- 创建Person.h类
#import <Foundation/Foundation.h>
#import "ApartmentProtocol.h" // 使用当前协议
@protocol PersinDelegate; // 协议的声明,不声明的话就要把协议写在类前面
@interface Person : NSObject
{
@private
NSString *name;
id <ApartmentProtocol> _delegate;
id <PersinDelegate> _delegates;
}
@property (nonatomic,copy) NSString *name;
@property (nonatomic) id <ApartmentProtocol> _delegate; //assign防止循环引用
- (id)initWithName:(NSString *)name withDelegate: (id <ApartmentProtocol>) delegate;
- (void)personFindApartment;
@end
- 创建Person.m实现类
#import "Person.h"
// 定义私有方法
@interface Person()
- (void) startFindApartment:(NSTimer *)timer;
@end
@implementation Person
@synthesize name