为什么会有delegate模式?换句话说,它可以用来解决神马问题?
当一个类的某些功能需要被别人来实现,但是既不明确是些什么功能,又不明确谁来实现这些功能的时候,委托模式就可以派上用场。
实例代码:
ClassA.h
#import <Foundation/Foundation.h>
@interface ClassA : NSObject
{
id _delegate;
}
@property(nonatomic, assign) id delegate;
- (void)call;
@end
#import "ClassA.h"
#import "ClassB.h"
@implementation ClassA
@synthesize delegate;
- (void)call
{
NSString* value = @"你好";
[delegate transparendValue:value];
}
@end
ClassB.h
#import <Foundation/Foundation.h>
@interface ClassB : NSObject
- (void)transparendValue:(NSString *)fromValue;
@end
ClassB.m
#import "ClassB.h"
@implementation ClassB
- (void)transparendValue:(NSString *)fromStr
{
NSLog(@"%@ ,我是委托测试",fromStr);
}
@end
main.m
#import <Foundation/Foundation.h>
#import "ClassA.h"
#import "ClassB.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
ClassA *a = [[ClassA alloc]init];
ClassB *b = [[ClassB alloc]init];
a.delegate = b;
[a call];
}
return 0;
}