typedef和block】的更多相关文章

为block类型对象取别名 1.没有使用typedef的情况 int (^block_add)(int, int) = ^(int value1, int value2) { return value1 + value2; }; NSLog(@"%i", block_add (10, 20)); 2.使用typedef的两种格式 // 1.该类型的函数指针也可以使用 typedef int (myBlock)(int, int); myBlock ^minus = ^(int num1…
1. 操作系统中的栈和堆 我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方式类似于数据结构中的栈,即后进先出.先进后出的原则. 例如:在函数中申明一个局部变量int b;系统自动在栈中为b开辟空间. 堆区(heap):一般由程序员申请并指明大小,最终也由程序员释放.如果程序员不释放,程序结束时可能会由OS回收.对于堆区的管理是采用链表式管理的,操作系统有一个记录空闲内存地…
Block是对象,它封装了一段代码,这段代码可以在任何时候执行.block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别:block是inline的,并且它对局部变量是只读的. 1.实体形式 Block的实际行为和Function很像,Block实体形式如下: ^(传入参数列){行为主体}; Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,专有名字叫做bl…
/* block要掌握的东西 1> 如何定义block变量 int (^sumBlock)(int, int); void (^myBlock)(); 2> 如何利用block封装代码 ^(int a, int b) { return a - b; }; ^() { NSLog(@"----------"); }; ^ { NSLog(@"----------"); }; 3> block访问外面变量 * block内部可以访问外面的变量 * 默认…
代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用,目前Block已经广泛应用于iOS开发中,常用于GCD.动画.排序及各类回调 注: Block的声明与赋值只是保存了一段代码段,必须调用才能执行内部代码 Block变量的声明.赋值与调用 Block变量的声明 Block变量的声明格式为: 返回值类型(^Block名字)(参数列表); /…
一):block学习总结 block :用来保存一段代码. 1.block 特点:  1> Block封装了一段代码,可以在任何时候执行   2> Block可以作为函数或者函数的返回值,而其本身又可以带输入参数或返回值  3> 苹果官方建议尽量多用block,在多线程.异步任务.集合遍历.集合排序.动画转场用的很多  4> Block可以在程序运行时凭空产生一个代码保存起来  2.block的标志:^  3.block跟函数很像 1> 可以保存代码  2> 有返回值 …
1. 操作系统中的栈和堆 我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方式类似于数据结构中的栈,即后进先出.先进后出的原则. 例如:在函数中申明一个局部变量int b;系统自动在栈中为b开辟空间. 堆区(heap):一般由程序员申请并指明大小,最终也由程序员释放.如果程序员不释放,程序结束时可能会由OS回收.对于堆区的管理是采用链表式管理的,操作系统有一个记录空闲内存地…
关于typedef  我们学习typedef的时候,他的定义语法是:typedef+类型+别名,但是按照上面的格式,自定义数组怎么定义呢,是这样tepedef int a[10] 别名?还是这样tepedef int 别名 a[10] ?最近学了自定义block,是这样typedef void (^别名)();还是这样typedef void (^)() 别名;最后还是这样typedef void (^别名)();我就有疑惑这不符合以前的语法呀. 我查了一些资料,国内的大部分书是这样的定义格式:…
Block 是iOS在4.0之后新增的程式语法,一般用于回调方法,功能上和delegate类似.本文将讲解block的几种常见的使用方法,当然,block中最值得注意的还是它的内存管理,我将在<>中讲到. 环境信息: Mac OS X 10.9.5 Xcode 5.1.1 IOS 7.1 正文: 为什么要使用block? 1. 可代替delegate完成回调,而不需要像delegate那样繁琐 2. 在某些方面,可代替selector(如NSNotificationCenter在addObse…
来自李明杰的视频. block 用来保存一段代码 block 的标志:^ block  跟函数很像: 1).可以保存代码  2).有返回值  3). 有形参 temp1:没有返回值.没有形参的 block 如果 block 没有形参,可以省略 () void(^myblock)() = ^{ NSLog(@"----------"); NSLog(@"----------"); }; // 利用 block 变量调用 block 内部的代码 myblock(); t…
一.ARC ARC 是一种编译器特性!而不是IOS运行时特性,和JAVA中得垃圾回收机制完全不一样ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切ARC规则:只要还有一个强指针变量指向对象,对象就会保持在内存中弱指针指向的对象被回收后,弱指针会自动变为nil指针,不会引发野指针错误使用注意:1.不允许调用release.retain.re…
http://blog.csdn.net/itpeng523/article/details/23965147 一.先用Xcode创建一个空工程 学习block之前先用弄懂c语言的函数指针 看代码: typedef int (^SumP)(int,int);//用typedef定义一个block类型 void test() { printf("调用了test函数\n"); } int sum(int a,int b) { return a+b; } int main(int argc,…
block block用来保存一段代码 block的标志:^ block跟函数很像:可以保存代码.有返回值.有形参.调用方式跟调用方法一样 block内部可以访问外面的变量 默认情况下,block内部不能修改外面的局部变量 给局部变量加上__block关键字,这个局部变量就可以在block内部修改 block助记符 inlineBlock <#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parame…
OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型为空 (2)利用block封装代码…
Block :block 实际上就是 Objective-C语言对闭包的实现 闭包(Closure):闭包就是一个函数,或者一个指向函数的指针,加上这个函数执行的非局部变量.闭包允许一个函数访问声明该函数运行上下文中的变量,甚至可以访问不同运行上文中的变量. 1 block 的原型 和 定义 *block的 原型: int  ( ^ sumblock ) ( int , int ); 上面的代码声明了一个block(^)的原型,名字叫做 sumblock,包含两个 int 型的参数,返回值为 i…
之前一直都是用这别人或者是系统系统封装好的block,用这都挺好,可以访问那些定义了block变量的函数变量在block中使用. 首先总结一个block的用法:1.block有些类似于函数的指针 拥有返回值,参数名称 .例:void (^useBlock)(int a, int b){}; 2.可以用typedef来定义block: typedef void(^MyBlock)(int a,int b); 使用 block的时候用法是:MyBlock block = ^(int a,int b)…
Block使用总结: 1.格式: ReturnType (^ BlockName)(参数…); //例: int (^ BFunc) (int a, int b); 2.block赋值: block名 =^(){ }; 3.定义 3.1 先定义后赋值 int (^ myBlock4)(int a,int b) = NULL; // 有返回值 myBlock4 = ^(int a ,int b){ return a+b; }; 3.2 block的定义: //例(1) int (^block_fu…
一.block 1> 基本使用 相当于用来存放代码的代码块 效率高 若没有形参可以省略小括号 2> block与函数的相同点 可以保存代码 可以有返回值 可以有形参 调用方式一样 3> block对外部变量的访问 可以访问外部变量 默认情况下,不能在block内修改外部变量 用关键字__block修饰外部变量,就可以在block内修改它 4> 用typedef定义block类型与函数类型 定义block类型 ① 格式:typedef int (^myBlock)(int, int)…
看到一篇写的关于block和delegate放在一起来方便大家理解的文章,感觉不错,就推荐给大家来看一下. 代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显示界面,而不需要进行数据的管理,数据的管理和逻辑是Controller的责任,所以此时View就应该将这个功能委托给Controller去实现,当然你作为码农强行让View处理数据逻辑的任务,也不…
block与函数类似:1.可以保存代码 2.又返回值 3.有形参 4.调用方式一样 block的标志:^ 一.定义一个无参无返回值的block void (^myBlock)();--1.void 代表这个block变量没有返回值 2.最右边的括号(),代表block的参数,没有参数的话就为空 3.中间的括号中^是block的标志,myBlock是block变量的名字 二.定义一个接收两个int类型数据返回int类型的block int (^myBlock)(int,int); 代码示例: //…
block 是个很陌生的东西啊.以前没有学会,现在再看它,还是觉得很稀奇古怪. 无奈,之后硬着头皮学了.. //有参返回值 格式: 返回值类型 (^变量名)(参数类型及个数) = ^(形参列表){ 代码块语句: return: }; eg: int (^plus)(int a,int b) = ^(int a,int b){ return a+b; }; NSLog(@"%d",plus(2,3)); 1.返回值类型是int: 2.变量名是plus: 3.参数类型是int,个数,就是使…
代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显示界面,而不需要进行数据的管理,数据的管理和逻辑是Controller的责任,所以此时View就应该将这个功能委托给Controller去实现,当然你作为码农强行让View处理数据逻辑的任务,也不是不行,只是这就违背了MVC设计模式,项目小还好,随着功能的扩展,我们就会发现越写越难写:还有一种情况,就是…
之前写过一篇博客,把Block跟delegate类比,说明了使用block,可以通过更少的代码实现代理的功能.那篇博客将block定义为类的property. 过了这么长时间,对于block的内容有了很多的遗忘,果然block的语法比较操蛋,容易遗忘,还是看看http://fuckingblocksyntax.com/,复习一下操蛋的block语法,我翻译如下, (1)block作为本地变量(local variable) returnType (^blockName)(parameterTyp…
摘自:http://www.cnblogs.com/GarveyCalvin/p/4204167.html> Date : 2015-12-4 前言:我们可以把Block当作一个闭包函数,它可以访问外部变量和局部变量,但默认是不可以修改外部变量.你可以使用它来做回调方法,比起使用代理(Delegate)会更加直观.顺带一提,苹果很多的接口(API)都使用了Block. 一.Block的基本定义 Block的基本写法(也是详细写法): returnType (^blockName)(params)…
Block是OC中一种与其它语言的语法区别较大的一种用法,需要注意: Block也叫代码段,它封装了一段代码,可以在任何时候执行: Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值: 它和传统的函数指针很类似,但也有区别:block是inline(内联函数)的,并且默认情况下它对局部变量时只读的: Apple建议尽量多使用block: 在多线程.异步任务.集合遍历.集合排序.动画转场中用的较多. Block有两种使用方法: 1.直接定义一个block // 定义了一个…
Block介绍 Block在ios 4.0之后加入,并大量使用在新的ios api中.block是一个匿名的代码块,可以传递给其他对象的参数,并得到返回值.从本质上讲,block同其他普通的变量类似,只是其储存的数据是一个函数体.Block不只是针对Objective-C的专利,而是一种可以应用于C.C++和OBjective-C的语言层面的新特性.通过使用block,开发者可以将一段代码段像某一个数值一样当做参数传递给函数.同时,blocks也是Objective-C的一种对象,可以像其他对象…
Block数据类型,又被称为代码段.因为它可以封装一段代码.苹果官方建议多用block.因为在多线程控制.异步任务,集合遍历.集合排序.动画转场等方面用的很多. Block的特点: 1.Block 用于封装一段代码,并可以在任何时候执行. 2.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. Block的定义: 例:int(^sum)(int ,int) = ^(int a,int b){ return a+b; } 从形势上看和指向函数的指针比较像 例:int(…
(1)声明block变量并设置返回值类型 typedef int(^MYBlock)(NSString *); @property (nonatomic, copy) MYBlock block; (2)调用Block方法(发送),并接收返回值 int i = self.block(@"123”); NSLog(@"%d",i); (3)调用Block方法(接收),并接收返回值 self.ceshi.block =  ^ (NSString *string) { NSLog(…
OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么? 苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似性: (1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型为空 (2)利用block封装代…
高级Block练习 一 .最简单的block使用 使用block的三个步骤:1.定义block变量 2.创建block代码块 3.调用block匿名函数 定义一个block的构成包括:返回值,block名,参数类型. block代码块作为一个匿名函数是可以被写在其他方法中的,所以一般我们将block代码块写在其他方法里,调用该方法的时候block代码块将不会被执行,只有回调block代码块的时候,才会执行. ViewController.h #import <UIKit/UIKit.h> @i…