//A.h
#import <Foundation/Foundation.h>
@interface A : NSObject
- (void)delegate:(int (^)(int, int))block;
@end
#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;
}