IOS 阶段学习第24天笔记(Block的介绍)

IOS学习(OC语言)知识点整理

一、Block 的介绍

1)概念: block 是一种数据类型,类似于C语言中没有名字的函数,可以接收参数,也可以返回值与C函数一样被调用

封装一段代码 可以在任何地方调用 block 也可以作为函数参数,以及函数返回值

2)Block 实例代码

 1 //定义了一个block类型MyBlock,MyBlock类型的变量只能指向带两个int的参数和返回int的代码块
 2 typedef int (^MyBlock)(int,int);
 3 //定义一个函数指针
 4 int (*pMath)(int ,int);
 5
 6 int add(int a,int b)
 7 {
 8     return a+b;
 9 }
10
11 int sub(int a,int b)
12 {
13     return a-b;
14 }
15
16 int main(int argc, const char * argv[]) {
17     @autoreleasepool {
18         pMath = add;//指向函数指针
19         //NSLog(@"sum: %d",pMath(2,3));
20         pMath = sub;
21
22         //定义了一个block,block只能指向带2个int的参数,返回int的代码块
23         //以^开始的为代码块,后面()是参数,然后{}代码块
24         int (^bloke1)(int,int) = ^(int a,int b){
25             return a+b;
26         };
27
28         int s = bloke1(3,5);
29         NSLog(@"s:%d",s);
30         //定义一个block指向没有参数没有返回值的代码块(没有参数,void可以省略)
31         void (^block2)(void) = ^{
32             NSLog(@"programing is fun!");
33         };
34         block2();
35         int (^block3)(int,int) = ^(int a,int b ){
36             return a-b;
37
38         };
39
40         //定义了MyBlock类型的变量,赋值代码块
41         MyBlock block4 = ^(int a,int b){
42             return a*b;
43         };
44
45         NSLog(@"%d",block4(2,5));
46
47         int c = 10;
48         __block int d = 1;
49         //block块可以访问块外的变量但是不能修改,如果需要修改,变量前加上__block修饰
50         void (^block5)(void) = ^{
51             d = d+2;
52             NSLog(@"c:%d,d:%d",c,d);
53         };
54         block5();
55     }
56     return 0;
57 }
时间: 2024-10-09 12:49:03

IOS 阶段学习第24天笔记(Block的介绍)的相关文章

iOS阶段学习第27天笔记(UIButton-UIImageView的介绍)

iOS学习(UI)知识点整理 一.关于UIButton的介绍 1)概念:UIButton 是一种常用的控件,通过点击触发相应的功能 2)UIButton 的几种常用的状态        1.UIControlStateNormal  正常状态        2.UIControlStateHighlighted 高亮状态        3.UIControlStateSelected 选中状态  -> 当button的selected设置成yes之后才能触发 3)UIButton常用的几种事件 

iOS阶段学习第29天笔记(UITextField的介绍)

iOS学习(UI)知识点整理 一.关于UITextField的介绍 1)概念: UITextField 是用于接收用户输入的一个控件 2)UITextField  初始化实例代码: 1 //创建一个UItextField实例 2 UITextField *textField = [[UITextField alloc] init]; 3 textField.frame = CGRectMake(10, 40, self.view.frame.size.width - 20, 40); 4 tex

iOS阶段学习第28天笔记(UIView的介绍)

iOS学习(UI)知识点整理 一.关于UIVIew 的介绍 1)概念:UIView 是用于装载并展示各类控件的大容器,是iOS中所有UI控件的基类 2)UIView  初始化实例代码 1 UIView *view1 = [[UIView alloc] init]; 2 view1.frame = CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height/2); 3 view1.backgroundColor

iOS阶段学习第35天笔记(Touch手势介绍)

一.Touch手势 1.利用手势实现UIButton移动效果  实例代码     1) 创建一个继承自UIButton的类 MyButton.h  代码实现 1 #import <UIKit/UIKit.h> 2 @interface MyButton : UIButton 3 @end 2)MyButton.m  的代码实现 1 #import "MyButton.h" 2 @implementation MyButton 3 { 4 CGPoint _lastPoint

IOS阶段学习第三天笔记(运算符)

                                         IOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运算符优先级 括号()> * ,/ ,%  >+,- 4)%表示取余.取模  a%b 表示a除以b取余数 5)整数相除保留两位小数处理方法如: printf(“%.2f”,(float)14/9); 6)自增自减运算符

iOS阶段学习第32天笔记(页面传值方法介绍)

iOS学习(UI)知识点整理 一.界面传值方法 1.方法一  Block传值  通过SubView视图的Block向View视图传值改变View视图的背景色 实例代码: 1)SubViewController.h 文件的代码实现 1 #import <UIKit/UIKit.h> 2 @interface SubViewController : UIViewController 3 @property (nonatomic,copy) void(^callback)(UIColor *colo

IOS 阶段学习第23天笔记(XML数据格式介绍)

IOS学习(OC语言)知识点整理 一.XML数据格式介绍 1)概念:xml是extensible markup language扩展的标记语言,一般用来表示.传输和存储数据 2)xml与json目前使用比较广泛的两种网络传输数据格式 两者分别占比: 1. json:市场上占90%,轻量级的表示数据 2.xml:占10%,表示数据比较复杂 3)XML三种数据解析方法: 1.DOM解析:将整个xml数据加载到内存中,构造一个对象,从根结点开始一级一级的解析提取数据.缺点:如果数据大, 比较占内存,解

IOS阶段学习第21天笔记(ARC内存管理-Copy-代理)

IOS学习(OC语言)知识点整理 一.OC 中的ARC内存管理 1)ARC中释放对象的内存原则:看这个对象有没有强引用指向它 2)strong:强引用,默认情况下的引用都是强引用 3) weak:弱引用__weak 4)ARC环境下:与内存相关的代码都不能使用了,如果要在ARC环境下使用MRC内存管理代码 如: [super    delloc]  选中项目找到 Build Phases 菜单下的  Compile Sources 项 选中要转换的.m文件, 双击写入此行代码:-fno-objc

IOS阶段学习第18天笔记(归档与解归档操作)

IOS学习(OC语言)知识点整理 一.归档与解归档的操作 1)归档是一个过程,将一个或多个对象存储起来,以便以后可以还原,包括将对象存入文件,以后再读取 将数据对象归档成plist文件 2)plist文件中只能存放:NSString.NSDate.NSNumber.Bool.NSData.NSArray.NSDictionary 并且NSArray和NSDictionary中只能是以上的类型 3)归档存放时数据是什么类型,读取数据时就用什么类型的数据接收. 4)归档不能直接操作自定义对象类型的数