//block 和delegate的用法 设置代理
#import <UIKit/UIKit.h>
typedef void (^ASIHeadersBlock)(NSString *myString);
@protocol AHViewControllerDelegate <NSObject>
- (void)smyheadersReceivedBlock:(NSString *)string;
@end
@interface AHViewController : UIViewController
{
    ASIHeadersBlock headersReceivedBlock;
   
    NSObject <AHViewControllerDelegate> *delegate;
}
@property (nonatomic, assign) NSObject <AHViewControllerDelegate> * delegate;
- (void)setHeadersReceivedBlock:(ASIHeadersBlock)aReceivedBlock;
@end
---------------------------------------------------------------------
//
//  AHViewController.m
//  TestBlock
//
//  Created by ganvin on 13-4-12.
//  Copyright (c) 2013年 ganvin. All rights reserved.
//
#import "AHViewController.h"
@interface AHViewController ()
@end
@implementation AHViewController
@synthesize  delegate;
- (void)setHeadersReceivedBlock:(ASIHeadersBlock)aReceivedBlock
{
[headersReceivedBlock release];
headersReceivedBlock = [aReceivedBlock copy];
}
- (void)viewDidLoad
{
    [super viewDidLoad];
   
// Do any additional setup after loading the view, typically from a nib.
if(headersReceivedBlock)
    {
     headersReceivedBlock(@"ssss");
  }
   
   
    if (delegate!= nil && [delegate respondsToSelector:@selector(smyheadersReceivedBlock:)])
    {
        [delegate performSelector:@selector(smyheadersReceivedBlock:) withObject:@"sssss"];
    }
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (void)dealloc
{
    delegate = nil;
if (headersReceivedBlock)
    {
[headersReceivedBlock release];
headersReceivedBlock = nil;
}
    [super dealloc];
}
@end