现在的位置: 首页 > 综合 > 正文

ios block 实现函数回调

2016年05月28日 ⁄ 综合 ⁄ 共 716字 ⁄ 字号 评论关闭

//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;}];

    //delegateA类的方法,但实际执行的时候还是在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;

}

抱歉!评论已关闭.