Block(简单介绍)

 1 #import "ViewController.h"
 2
 3 int age = 18;
 4 typedef int(^MaxBlock)(int,int);
 5 @interface ViewController ()
 6
 7 @end
 8
 9 @implementation ViewController
10
11 - (void)viewDidLoad {
12     [super viewDidLoad];
13     // Do any additional setup after loading the view, typically from a nib.
14 #pragma mark - Block的定义
15     //block的实质是匿名函数
16     //block的定义分为三个部分:1.返回值类型 2.参数列表 3block的实体部分{}
17     /*
18      ^返回值类型(参数列表:参数类型,参数名){
19           如果有返回值,使用return 返回值
20      };
21      */
22
23     //定义一个简单的block实现输出一句话
24 //    ^void(){
25 //        NSLog(@"今天你吃饭了吗?");
26 //
27 //    };
28 //    //定义一个简单的block返回两个整数的和
29 //    ^int(int a, int b){
30 //        return a + b;
31 //    };
32 //    //定义一个block返回两个数的最大值
33 //    ^int(int x, int y){
34 //        return x > y ? x : y;
35 //    };
36
37 #pragma mark - block的使用
38
39     //Block的实质是匿名函数,不能像函数一样调用函数名,故引入了Block变量
40     //定义的Block变量必须和Block的定义部分返回值类型保持一致
41 //    void(^SayHi)() = ^void(){
42 //        NSLog(@"今天你吃饭了吗?");
43 //    };
44 //    SayHi();
45 //
46 //    int(^Sum)(int,int) = ^int(int x, int y){
47 //        return x + y;
48 //    };
49 //    NSLog(@"%d",Sum(3,5));
50 //
51 //    int(^MaxValue)(int, int) = ^int(int x, int y){
52 //        return x > y ? x : y;
53 //    };
54 //    NSLog(@"%d",MaxValue(2,9));
55
56     //Block的定义部分可以省略返回值,如果没有参数的情况下()可以省略
57
58 #pragma mark - Block的重定义typedef
59 //    MaxBlock max = ^int(int x, int y){
60 //        return x > y ? x : y;
61 //    };
62 //    NSLog(@"%d",max(3,8));
63 #pragma makr - Block与变量
64     //2.Block与在Block块外部定义的局部变量之间的关系:在Block块中可以访问该局部变量,但是不能修改
65     int count = 8;
66
67     //3.Block与使用__block修饰的局部变量之间的关系:可以修改可以访问
68     __block int num = 5;
69
70     //4.Block与static修饰的静态变量之间的关系:可以访问可以修改
71     static int number = 50;
72     //5.Block与全局变量之间的关系:可以访问和修改;
73     MaxBlock max = ^(int x, int y){
74
75         //1.Block与其内部的参数局部变量之间的关系:在Block内部可以修改和访问这些局部变量
76      return x > y ? x : y;
77         NSLog(@"%d",count);
78     };
79
80    #pragma mark - Block的内存
81
82     /*
83      在 Objective-C 语言中,一共有 3 种类型的 block:
84
85      _NSConcreteGlobalBlock 全局的静态 block,不会访问任何外部变量。
86      _NSConcreteStackBlock 保存在栈中的 block,当函数返回时会被销毁。
87      _NSConcreteMallocBlock 保存在堆中的 block,当引用计数为 0 时会被销毁。
88      */
89     //在Block块中没有使用任何变量:此时的Block存储在全局区
90     void(^block)() = ^{
91
92     };
93     //打印block在哪个区
94     NSLog(@"block = %@",block);
95     //Block块中有__block修饰的变量的时候此时存储在堆区
96
97
98 }
时间: 2024-08-26 09:44:58

Block(简单介绍)的相关文章

简单介绍几个CSSReset的方法

对于小型的网站来说,用这个并不会带来大的资源浪费,但如果是像Yahoo这种架构非常大的网站,必须要有选择地进行CSS重设,以减 少资源浪费.正在使用CSS的你,用过CSS Reset吗?当然,或许你用了,却不知道正在用,比如你可能经常用到:程序代码 * { padding: 0; margin: 0; border: 0; } 这也是一款CSS Reset的方法,让所有的选择器的padding.margin和border都设置成0. 这是一种强大的方法,也是最简单,最安全的方法,不过,也是 最占

iOS开发多线程篇 09 —NSOperation简单介绍

iOS开发多线程篇—NSOperation简单介绍 一.NSOperation简介 1.简单说明 NSOperation的作?:配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQueue实现多线程的具体步骤: (1)先将需要执行的操作封装到一个NSOperation对象中 (2)然后将NSOperation对象添加到NSOperationQueue中 (3)系统会?动将NSOperationQueue中的NSOpe

iOS开发网络篇—简单介绍ASI框架的使用

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道,单例在应用程序的整个生命周期中只有一个对象). App的启动过程 打开程序之后-> 1:Main函数 2:UIapplicationMain函数 3:初始化UIApplication(创建) 4:设置UIApplication代理和相应的代理属性 5:开启事件循环,监听系统事件 6监测info.p

iOS开发多线程篇—NSOperation简单介绍

iOS开发多线程篇—NSOperation简单介绍 一.NSOperation简介 1.简单说明 NSOperation的作?:配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQueue实现多线程的具体步骤: (1)先将需要执行的操作封装到一个NSOperation对象中 (2)然后将NSOperation对象添加到NSOperationQueue中 (3)系统会?动将NSOperationQueue中的NSOpe

webstorm简单介绍,webstrom基本使用

WebStorm混搭svn WebStorm混搭nodeJS     以less和uglify-js为例     如何用npm在root中下载模块  --------------------------------------------- webstorm简单介绍 官网地址:http://www.jetbrains.com/webstorm/features/index.html 参考地址:http://www.html5jscss.com/ide-webstrom-27.html 欲先善其事

iOS DeepLinkKit使用简单介绍

Update: 2017.04.08 添加了使用iOS DeepLinkKit使用Universal Links的部分 --------------------------------------------------------- 废话不多说,先说做这个的需求: 1.应用中有些社交元素的分享会分享一个链接到facebook, twitter, google+这类的社交媒体上 2.当用户点击某个链接的时候先跳转到自己的页面,然后再传递參数到iOS应用上打开指定的分享数据 思路:iOS提供了Sc

几种常见卡的简单介绍

以后内容为从网络摘录: 几种常见卡的简单介绍: 1.M1卡 M1卡是非接触式感应卡,数据保存期为10年,可改写10万次,读无限次.无电源,自带天线,工作频率为13.56MHZ.内含加密控制逻辑和通讯逻辑电路.一般主要有两种,S50和S70. S50容量1Kbyte,16个扇区(Sector),每个扇区4块(Block)(块0-3),共64块,按块号编址为0-63.每个扇区有独立的一组密码及访问控制.第0扇区的块0(即绝对地址0块)用于存放厂商代码,已经固化,不可更改.其他各扇区的块0.块1.块2

MVVM架构简单介绍

MVVM架构简单介绍 1 程序为什么要架构:便于程序员开发和维护代码. 2 常见的架构思想: MVC M:模型 V:视图 C:控制器 MVVM M:模型 V:视图+控制器 VM:视图模型 MVCS M:模型 V:视图 C:控制器 C:服务类 VIPER V:视图 I:交互器 P:展示器 E:实体 R:路由 (http://www.cocoachina.com/ios/20140703/9016.html) 3 MVVM介绍 模型(M):保存视图数据. 视图+控制器(V):展示内容 + 如何展示