block
今天学习了有关block的一点点儿知识,在此对其整理一下。
1 #import "ViewController.h"
2
3 @interface ViewController ()
4 {
5 UISlider *_slider;
6 }
7
8 @end
9
10 @implementation ViewController
11 //①普通的一个函数
12 int add(int a, int b){
13 return a+b;
14 }
15
16
17 - (void)viewDidLoad
18 {
19 [super viewDidLoad];
20 //①普通函数的调用
21 int num = add(2,4);
22 //②指针函数的调用
23 int (*addAlias)(int,int) = add;
24 num = addAlias(4,5);
25
26
27 //③block的声明^,不需要函数的名字,跟指针有异曲同工之处
28 int (^addBlock)(int,int) = ^(int a,int b){
29 return a + b;
30 };
31 num = addBlock(4,5);
32 NSLog(@"========%d",num);
33
34 __block int a = 5;
35 __weak UISlider *slider = _slider;//将slider变为弱引用
36 //声明block的时候,用到外界变量,那么会把外界变量的值保存下来,之后修改外界变量的值,block中的结果还是修改前的结果,如果变量用__block修饰,那么调用block语句块的时候,会实时调用外界的这个变量
37 void (^ocBlock)() = ^(){//()可以省略掉
38 slider.value = 1;
39 NSLog(@"%d",a);//将a=5复制一份,与a = 10无关
40 };
41 a = 10;
42 ocBlock();
43 }
44 @end
因为对代理方面的东西搞的不是很懂,所以想用一下block的方法实现一下传值。具体实例以后再继续。