闭包(BLocks)
能够读取使用其他变量的函数,block与函数指针最大的区别就是,函数指针实际上可看成一段可执行代码,而block是带有执行环境的可执行代码
1. 简单示例
int (^getSum)(int nums1, int nums2) = ^(int nums1, int nums2) {
return nums1 + nums2;
};
NSLog(@"%d + %d = %d", 5, 10, getSum(5, 10));
// 输出
// 2020-09-12 20:12:44.017162+0800 learn_obj_c[758:11162] 5 + 10 = 15
2. 在闭包中使用局部变量
2.1 直接使用(只读)
int main(int argc, const char * argv[]) {
@autoreleasepool {
int val = 5;
int (^getSum)(int nums1, int nums2) = ^(int nums1, int nums2) {
return (nums1 + nums2) * val;
};
NSLog(@"(%d + %d) * %d = %d", 5, 10, val,