block是OC的一种存储结构,用来存储一段代码,十分类似C语言中的函数指针,而代理模式的精髓我觉的就是弄清楚谁拥有一个代理,就是谁是Boss,谁是“奴才”。
我创建了Student类 ,由于不能像Xcode分开写就直接码在这里了,想用的可以自己去创建类
student.h
#import <Foundation/Foundation.h>
@class Student;
@protocol findRoom <NSObject>
// 创建出来一个协议中的方法,可以交给代理使用,每个代理都可以使用,减少了代码的冗余
- (void) findRoomForStudent : (Student *) student;
@end
@interface Student : NSObject
// 创建一个代理对象,代理可以是任何人,但必须遵守我的协议
@property (nonatomic , assign) id<findRoom> delegate;
- (void) findRoomForMe;
@end
student.m
#import "Student.h"
@implementation Student
- (void)findRoomForMe
{
NSLog(@"我要找房子");
// 自己的代理给自己找房
[self.delegate findRoomForStudent:self];
}
@end