您的位置:首页 > 移动开发 > IOS开发

iOS开发中block基本使用

2015-11-02 17:42 387 查看
1.block的作用

block就是弥补了 指向函数的指针,不能够直接保存一个函数体(代码块)

例如:

void (^myBlock)() = ^{
NSLog(@"test");
};

myBlock();

2.

int (^sumBlock)(int a, int b) = ^int (int a, int b) {

return a + b;
};

int result = sumBlock(10,20);
NSLog(@"result = %d",result);


3.block的使用

main.m

//如果想要改变,block代码块之外的变量值,就必须在变量前加入
//__block关键字
__block int x = 0;

int (^sumBlock)(int a, int b) = ^int (int a, int b) {

int result = (a * b);
x = result;
return result;
};

//当在开发中,你发现一个方法中的算法,可以有多种实现,你一时还不能确定用哪种更好,你就可以吧方法中其中一个参数定义成block方式
//

Calculate * cal = [[Calculate alloc] init];

int sum = [cal calculateWithNumber1:10 andNumber2:20 andCalculate:sumBlock];

NSLog(@"sum = %d",sum);

NSLog(@"x = %d",x);


Calculate.h

#import <Foundation/Foundation.h>

typedef int (^calculateBlock)(int a,int b);

@interface Calculate : NSObject

- (int)calculateWithNumber1:(int)number1 andNumber2:(int)number2 andCalculate:(calculateBlock)calculate;

@end


Calculate.m

#import "Calculate.h"

@implementation Calculate

/*
- (int)calculateWithNumber1:(int)number1 andNumber2:(int)number2
{
//    return number1 + number2;
//    return number1 - number2;
//    return number1 * number2;
//    return number1 / number2;
}
*/

- (int)calculateWithNumber1:(int)number1 andNumber2:(int)number2 andCalculate:(calculateBlock)calculate
{
//经常变化的功能,在设计当中叫做封装变化
return calculate(number1,number2);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: