IOS 设计模式之Delegate模式

为什么会有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;
}

 

posted @ 2013-05-15 14:48  菜鸟程序猿  阅读(151)  评论(0编辑  收藏  举报