1 Star 0 Fork 0

AppleDream / MRC

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
main.m 1.44 KB
一键复制 编辑 原始数据 按行查看 历史
hyl 提交于 2016-04-03 23:06 . block的一些注意点
//
// 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;
}
Objective-C
1
https://gitee.com/HYLAppleDream/MRC.git
git@gitee.com:HYLAppleDream/MRC.git
HYLAppleDream
MRC
MRC
master

搜索帮助