//A.h
#import <Foundation/Foundation.h>
@interface A : NSObject
- (void)delegate:(int (^)(int,
int))block;
@end
//A.m
#import "A.h"
@implementation A
- (void)delegate:(int (^)(int,
int))block{
block(10,20);//自己的方法自己并没实际地执行,而是交由其它类来执行(譬如B类)
}
@end
//B.h
#import <Foundation/Foundation.h>
@interface B : NSObject
- (void)aMethod;
@end
//B.m
#import "B.h"
#import "A.h"
@implementation B
- (void)aMethod{
A *a = [[[A
alloc] init]
autorelease];
[a
delegate:^int(int a,
int b){return a + b;}];
//delegate是A类的方法,但实际执行的时候还是在B类执行,这就是方法回调
//通俗的理解就是B实现了A的方法,A自己并不实际执行自己的方法delegate
//给B类来实现
}
@end
//AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {
B *b = [[[B
alloc] init]
autorelease];
[b
aMethod];
return
YES;
}