block要掌握的东西

/*
 block要掌握的东西
 1> 如何定义block变量
 int (^sumBlock)(int, int);
 void (^myBlock)();

 2> 如何利用block封装代码
 ^(int a, int b) {
    return a - b;
 };

 ^() {
    NSLog(@"----------");
 };

 ^ {
    NSLog(@"----------");
 };

 3> block访问外面变量
 * block内部可以访问外面的变量
 * 默认情况下,block内部不能修改外面的局部变量
 * 给局部变量加上__block关键字,这个局部变量就可以在block内部修改

 4> 利用typedef定义block类型
 typedef int (^MyBlock)(int, int);
 // 以后就可以利用MyBlock这种类型来定义block变量
 MyBlock block;
 MyBlock b1, b2;

 b1 = ^(int a, int b) {
    return a - b;
 };

 MyBlock b3 = ^(int a, int b) {
    return a - b;
 };
 */
时间: 2024-12-21 05:24:37

block要掌握的东西的相关文章

深入理解block

2010年WWDC发布iOS4时Apple对Objective-C进行了一次重要的升级:支持Block.说到底这东西就是闭包,其他高级语音例如Java和C++已有支持,第一次使用Block感觉满简单好用的,但是慢慢也遇到很多坑.本文聊聊ARC和non-ARC下Block使用中的引用循环问题,最近遇到了好几次这种问题,还是深入记录下.先来套题目热热身,貌似能够全部答对的人蛮少的 Block实现原理 首先探究下Block的实现原理,由于Objective-C是C语言的超集,既然OC中的NSObjec

开始用JavaScript写一些小东西

用if函数写一个在网页中常见的效果,点击显示或者隐藏的效果,比如登陆框之类. <title>无标题文档</title> <style> #div1{ width:100px; height:400px; background:#CCCCCC; display:none;} </style> <script> function on() { var odiv=document.getElementById('div1'); if(odiv.styl

黑马程序员_ Objective-c 之block、protocol学习笔记

一):block学习总结 block :用来保存一段代码. 1.block 特点:  1> Block封装了一段代码,可以在任何时候执行   2> Block可以作为函数或者函数的返回值,而其本身又可以带输入参数或返回值  3> 苹果官方建议尽量多用block,在多线程.异步任务.集合遍历.集合排序.动画转场用的很多  4> Block可以在程序运行时凭空产生一个代码保存起来  2.block的标志:^  3.block跟函数很像 1> 可以保存代码  2> 有返回值 

黑马程序员——OC语言的Block与Protocol(协议)

Block ● Block封装了一段代码,可以在任何时候执?行 ● Block可以作为函数参数或者函数的返回值,?而其本?身又可以带输?入参数或返回值. ● 苹果官?方建议尽量多?用block.在多线程.异步任 务.集合遍历.集合排序.动画转场?用的很多 定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型为空 Blocks的定义: int (^MySum)(int, int) = ^(i

block 实现原理详解(一)

对于大多数人来讲,block内部到底是怎样实现的呢?我们可以借助clang将其编译成为c++的代码,就可以看出,block到底是什么东西, 先来看这样一个问题, int age = 10; void (^block)() = ^{ NSLog(@"%d",age); }; age = 30; block();//10 以及下面的这一段代码 __block int age = 10; void (^block)() = ^{ NSLog(@"%d",age); };

block底层

block基础使用语法 Block 语法: 1.作为当地变量: returnType (^blockName)(parameterTypes) = ^returnType(parameters) { ... ... } 2.作为属性: @property (nonatomic,copy) returnType (^blockName)(parameterTypes) 3.作为方法参数: -(void)someMethodThatTakesABlock:( returnType (^)(param

Objective-C - 代码块block

代码块block /* block要掌握的东西 1> 如何定义block变量 int (^sumBlock)(int, int); void (^myBlock)(); 2> 如何利用block封装代码 ^(int a, int b) { return a - b; }; ^() { NSLog(@"----------"); }; ^ { NSLog(@"----------"); }; 3> block访问外面变量 * block内部可以访问外

转:Block原理及引用循环问题

2010年WWDC发布iOS4时Apple对Objective-C进行了一次重要的升级:支持Block.说到底这东西就是闭包,其他高级语音例如Java和C++已有支持,第一次使用Block感觉满简单好用的,但是慢慢也遇到很多坑.本文聊聊ARC和non-ARC下Block使用中的引用循环问题,最近遇到了好几次这种问题,还是深入记录下.先来套题目热热身,貌似能够全部答对的人蛮少的 Block实现原理 首先探究下Block的实现原理,由于Objective-C是C语言的超集,既然OC中的NSObjec

iOS开发之oc(十三)--Block的使用(1)

(一)Block 是一种数据类型(就需要定义一种变量保存这种类型) 作用:用Block封装(保存)一段代码,可以在任何时候执行 block跟函数很像: 1.可以保存代码 2.有返回值 3.有形参 4.调用方式一样 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 在多线程.异步任务.集合遍历.集合排序.动画转场用的很多,因此,苹果官方建议尽量多用block. (二)Block定义 int (^MySum)(int, int) = ^(int a, int b) {