文档章节

block的使用(二)

我爱觉觉
 我爱觉觉
发布于 2016/02/29 11:05
字数 351
阅读 14
收藏 0

typedef int INT; // int定义别名INT

typedef int ARR[4]; ARR a1;//定义了一个长度为4的整形数组

//typedef  定义类型

// typedef 给基本数据类型 构造类型 枚举类型 函数指针 起别名

// 函数指针: 指向函数的指针


#import <Foundation/Foundation.h>


int sum(int a,int b){

    return a+b;

}


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // 调用函数

        int s1 = sum(10, 119); // 函数名存储的是函数的首地址

        NSLog(@"%d",s1); // 129

        // 函数指针p,p指向的是sum函数的首地址

        int (*p)(int a, int b);

        p = sum; // p赋初始值

        int s2 = (*p)(10,119);

          NSLog(@"%d",s2); // 129

        

        typedef int (*p1)(int a, int b); //给返回值是int并且有2个参数的函数起别名,别名是p1p1是一种类型

        

        // 定义无参无返回值的block变量

        void (^block1)(); // block1是一个返回值是void没有参数的block变量

        block1 = ^{

            NSLog(@"hahah");

        };

        

        // 使用typedef

        typedef void(^block2)(); // 给返回值是void 没有参数的代码块起一个别名,别名是block2

//        block2 = ^{

//            NSLog(@"222");

//        };   会报错

        

        block2 bb; // bb是一个block变量

        bb = ^{

            NSLog(@"bb");

        };

        

        bb();

        

        // 给有参数没有返回值的block起别名

        typedef void(^blockType)(int); // blockType 是一个类型

        blockType b1;

        b1 = ^(int a) {

            NSLog(@"a = %d",a);

        };

        

        b1(10);

        

        // 给有参数有返回值的block起别名

        

        typedef int(^blockType2)(int ,int);

        blockType2 b2 = ^ (int x,int y) {

            return x + y;

        };

        

        int sum = b2(10,5);

        NSLog(@"%d",sum);

    }

    return 0;

}


© 著作权归作者所有

共有 人打赏支持
我爱觉觉
粉丝 2
博文 49
码字总数 10640
作品 0
海淀
iOS之Block详解

iOS Block实例:https://my.oschina.net/Jacedy/blog/842167 一、Block定义 闭包是一个函数(或指向函数的指针),再加上该函数执行的外部的上下文变量(有时候也称作自由变量)。 block 实际...

_子墨
2016/03/01
371
0
IOS--Block入门

Block介绍 一:Block是一种具有匿名功能的内嵌函数,特性如下: (1):如一般函数能拥有带有型态的参数 (2):拥有回传值 (3):可以获取和选择性地修改作用域的状态 二:Block的使用 Bl...

Mark_Jiang
2016/01/07
38
0
iOS中动态更新补丁策略JSPatch运用基础二

iOS中动态更新补丁策略JSPatch运用基础二 一、引言 上篇博客中介绍了iOS开发中JSPatch引擎进行动态热修复的一些基础功能,其中包括向Objective-C类中添加类方法与成员方法、添加临时成员变量...

珲少
2016/03/30
265
0
iOS中block的使用

一、block简介 block代码块是在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,block是一种特殊的数据类型,其可以正常定义变量、作为参数、作为返回值,blcok还可以保存一段代码,在...

勤劳的小QQ
2017/04/21
0
0
Block循环引用

前言 在我们开发的过程中,block运用的非常广泛,为了避免写过多的delegate或者是通知等,项目中会运用大量的block回调,虽然现在大部分的工程都是采用ARC,但是在ARC上面使用block更为复杂,...

麦兜卖鱼丸
2016/05/27
129
0

没有更多内容

加载失败,请刷新页面

加载更多

Python介绍

Python介绍 一、简介 Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载等,有益于增强源代码的复用性。Python相对于Lisp这种传统的函数式编程语言,P...

星汉
7分钟前
0
0
VS_设置护眼背景色

工具---->选项---->环境---->字体和颜色:

一个小妞
9分钟前
0
0
Flask跨域请求的处理方法

在Flask开发RESTful后端时,前端请求会遇到跨域的问题。下面是解决方法: 使用 flask-cors库可以很容易的解决 pip install flask-cors 两种方法,一个是全局/批量的,一个是单一独立的: 安全...

ykbj
10分钟前
1
0
Pandas学习记录-Series

系列(Series)是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组。轴标签统称为索引。 pandas.Series Pandas系列可以使用以下构造函数创建 - pandas.Series( dat...

kipeng300
18分钟前
0
0
可以实现内网穿透的几款工具

最近没什么事情,看了一些关于内网穿透的文章,因我本身已是做微信开发相关的工作,对这部分关注的比较多,现分享给大家。 首先说下内网穿透的原理。 NAPT原理 在NAT网关上会有一张映射表,表...

哥本哈根的小哥
19分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部