代码拉取完成,页面将自动刷新
//
// main.m
// Blokc的一些注意点
//
// Created by hyl on 16/4/3.
// Copyright © 2016年 hyl. All rights reserved.
//
#import <Foundation/Foundation.h>
int caculate(int(^caculate)(int,int),int a,int b)
{
return caculate(a,b);
}
int main(int argc, const char * argv[]) {
// 可以发现两个NSLog(@"%p",&c);的值是不一样的
// 是值传递;不允许在block改变其值c=100;
int c=20;
__block int d=20;
// 如果加上__block就是传递指针,可以改变其值
NSLog(@"%p",&c);
typedef int (^caculateBlock) (int,int);//定义一种数据类型
caculateBlock sumBlock=^(int value1,int value2){
NSLog(@"%p",&c);
// c=100;
d=22;//想要允许改变其值,必需要加上__blokc
NSLog(@"%i",d);
return value1+value2;
};
// sumBlock(10,20);
// NSLog(@"%i",sumBlock(10,20));
// 当然block作为一种数据类型,当然就会数据类型的特性
// 能定义变量,能作为参数,能作为返回值
// 实际的应用场景中,后两者居多
// 重写加减法, 代码在main外面
// caculate(sumBlock, 10,40);
// NSLog(@"%i",caculate(^(int a,int b){return a+b;}, 10, 49));
c=30;//不会改变block中值,说明是copy
NSLog(@"%i",caculate(sumBlock, 10,40));
// 作为返回值,如果有js代码经验的话,就是返回一个函数,执行的时候加个()
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。