Block块:
可以传到任何地方使用
//" ^ "托字符
//1.无返回值 无参数的Block;
void(^myBlock)()=^{
NSLog(@"***********");
};
myBlock();
//2.有返回值有参数
NSInteger(^sumBlock)(NSInteger,NSInteger)=^(NSInteger num1,NSInteger num2)
{
return num1 + num2;
};
sumBlock(10,20);
NSLog(@"%ld",sumBlock(10,20));
//3.有返回值,无参数的
NSString*(^helloBlock)()=^
{
return @"hello";
};
//4.无返回值,有参数
//看到托字符'^'说明他就是一个Block块.
NSLog(@"%@",helloBlock());
void(^sayHiBlock)(NSString*)=^(NSString*s)
{
NSLog(@"%@",s);
};
sayHiBlock(@"hello,world");
*/
/* //如果要block中的变量的值改变的时候,加__block 例如:
//__block NSInteger test1 = 10;
__block NSInteger test1 = 10;
//void(^testBlock)()
blockName testBlock =^
{
//和Block块同作用域的变量我们可以只读使用,但是不能改变他的值
//例如:test1 = 20;
//如果想改变,把同作用域的变量改成:__block NSInteger test1 = 10;前面加__block;
test1 = 20;
NSLog(@"%ld", test1);
};
testBlock();
//在使用__block后,如果在Block块中改变了变量的值,外面也跟着改变;
NSLog(@"%ld",test1);