// Defining a block variableBOOL (^isInputEven)(int) = ^(int input) {
if (input % 2 == 0) { return YES;
} else { return NO;
}
};
以上定义了一个block变量,block本身就是一个程序段,因此有返回值有输入参数,这里这个block返回的类型为BOOL。天赋异秉的OC用了同样不走寻常路的"{% raw %} ^{% endraw %}"符号来表示block定义的开始(就像用减号和加号来定义方法一样),block的名称紧跟在{% raw %} ^{% endraw %}符号之后,这里是isInputEven(也即以后使用inline方式调用该block时所需要的名称)。这段block接受一个int型的参数,而在等号后面的int input是对这个传入int参数的说明:在该block内,将使用input这个名字来指代传入的int参数。一开始看block的定义和写法时可能会比较痛苦,但是请谨记它只是把我们常见的方法实现换了一种写法而已,请以习惯OC中括号发送消息的速度和决心,尽快习惯block的写法吧!
调用这个block的方法就非常简单和直观了,类似调用c函数的方式即可:
// Call similar to a C function callint x = -101;
NSLog(@"%d %@ number", x, isInputEven(x) ? @"is an even" : @"is not an even");
不出意外的话输出为-101 is not an even number