委托实例:
// main.m
//构成一个代理delegate需要三种文件 1个雇主类a 1个委托类b 1个委托协议c protocal
#import <Foundation/Foundation.h>
#import "Student.h"
#import "Teacher.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Student *stu=[[[Student alloc]init]autorelease];
Teacher *teacher=[[[Teacher alloc]init]autorelease];
//说明student的委托对象
stu.delegate =teacher;
[stu askQuestion:nil];
}
return 0;
}
// Student.h
#import <Foundation/Foundation.h>
#import "Costum.h"
@interface Student : NSObject
//声明student具有委托属性,且协议是委托协议
@property (assign,nonatomic) id<Costum> delegate;
- (void) askQuestion:(id) sender;//雇主类提出问题
@end
// Student.m
#import "Student.h"
@implementation Student
- (void) askQuestion:(id)sender
{
NSLog(@"student asked questions");//雇主类提出问题
[_delegate answerQuestion:nil];//委托要调用的方法,即解决问题的办法
}
@end
// Teacher.h
#import <Foundation/Foundation.h>
#import "Costum.h"
@interface Teacher : NSObject <Costum>
- (void) answerQuestion: (id)sender;
@end
// Teacher.m
#import "Teacher.h"
@implementation Teacher
- (void) answerQuestion:(id)sender
{
NSLog(@"teacher answer questions");
}
@end
// Costum.h
#import <Foundation/Foundation.h>
@protocol Costum <NSObject>
//建立委托协议,说明委托内容
- (void) answerQuestion:(id) sender;
@end