A.概念

1.block类似函数
(1)可以保存代码
(2)有返回值
(3)有形参 
2.block的标志:^
     // 没有参数和返回值的block
void (^myblock)() = ^{ // 没有形参,可以省略()
NSLog(@"这是新定义的block");
}; myblock(); // 带参数和返回值的block
int (^sum)(int a, int b) = ^(int a, int b){
return a + b;
}; int c = sum(, );
NSLog(@"%d", c);
 
3.可以访问代码块外的数据
     int a = ;
void (^block)();
block = ^{
NSLog(@"a = %d", a);
};
block();
out:
2014-11-15 09:25:34.766 04-block[1355:303] a = 10
 
4.不能修改代码块外的局部变量
     int a = ;
void (^block)();
block = ^{
a = ; // 默认情况下, block内部不能修改外面的局部变量
NSLog(@"a = %d", a);
};
block();
 
解决:给局部变量加上”__block”(双下划线开头)关键字
     __block int a = ;
void (^block)();
block = ^{
a = ; // error
NSLog(@"a = %d", a);
};
block();
out:
2014-11-15 09:28:52.814 04-block[1376:303] a = 20
 
5.使用typedef
 typedef int (^MyBlock) (int, int);

     MyBlock sumBlock;
sumBlock = ^(int a, int b){
return a + b;
}; MyBlock minusBlock;
minusBlock = ^(int a, int b){
return a - b;
};
 

[Objective-c 基础 - 3.3] block数据类型的更多相关文章

  1. 黑马程序员——Block数据类型

    Block数据类型,又被称为代码段.因为它可以封装一段代码.苹果官方建议多用block.因为在多线程控制.异步任务,集合遍历.集合排序.动画转场等方面用的很多. Block的特点: 1.Block 用 ...

  2. Java02-java语法基础(一)数据类型

    Java02-java语法基础(一)数据类型 一.语法基础 语句:以分号(;)结束 System.out.println(“Hello World !”); 语句块:用一组花括号({})括起来 { … ...

  3. Objective-C Block数据类型 @protocol关键字

    Block数据类型 Block封装了一段代码 可以在任何时候执行 Block可以作为函数参数或者函数的返回值 而其本身又可以带输入参数或返回值 苹果官方建议尽量多用Block 在多线程 异步任务 集合 ...

  4. 小白学开发(iOS)OC_ block数据类型(2015-08-08)

    // //  main.m //  block数据类型 // //  Created by admin on 15/8/12. //  Copyright (c) 2015年 admin. All r ...

  5. Java基础(二) 基本类型数据类型、包装类及自动拆装箱

    我们知道基本数据类型包括byte, short, int, long, float, double, char, boolean,对应的包装类分别是Byte, Short, Integer, Long ...

  6. Java编程基础——常量变量和数据类型

    Java编程基础——常量变量和数据类型 摘要:本文介绍了Java编程语言的常量变量和数据类型. 常量变量 常量的定义 一块内存中的数据存储空间,里面的数据不可以更改. 变量的定义 一块内存中的数据存储 ...

  7. openresty开发系列13--lua基础语法2常用数据类型介绍

    openresty开发系列13--lua基础语法2常用数据类型介绍 一)boolean(布尔)布尔类型,可选值 true/false: Lua 中 nil 和 false 为"假" ...

  8. MySQL基础(1) | 数据类型

    MySQL基础(1) | 数据类型 数值类型 TINYINT #小整数值,1 字节,有符号(-128,127),无符号(0,255) SMALLINT #大整数值,2 字节 MEDIUMINT #大整 ...

  9. c# 基础部分 (基本数据类型-- 表达式)

    一 基础部分 1.常用的基本数据类型 int  longing(长整) shortint(短整) string(文本型) char(字符型) bool (布尔型) false true 2.常量于变量 ...

随机推荐

  1. 并发下常见的加锁及锁的PHP具体实现

    http://www.cnblogs.com/scotoma/archive/2010/09/26/1836312.html Apache + PHP 的并发访问 http://www.cnblogs ...

  2. 二维图形的矩阵变换(三)——在WPF中的应用矩阵变换

    原文:二维图形的矩阵变换(三)--在WPF中的应用矩阵变换 UIElement和RenderTransform 首先,我们来看看什么样的对象可以进行变换.在WPF中,用于呈现给用户的对象的基类为Vis ...

  3. update多表陷阱

    今天同学发了个sql题目 A1表 B1表 id num id snum 1 10 1 90 2 2000 3 4000 3 30 B表的数据插入A表当中 最后的结果 A表 1 90 2 2000 3 ...

  4. 部分常见ORACLE面试题以及SQL注意事项

    部分常见ORACLE面试题以及SQL注意事项 一.表的创建: 一个通过单列外键联系起父表和子表的简单例子如下: CREATE TABLE parent(id INT NOT NULL, PRIMARY ...

  5. Windbg:如何给字符串下条件断点

    因为Windgb支持MASM语法,字符串的比较方法有$scmp和$sicmp.用法和c中的字符串比较方法一致.在需要比较字符串成员变量的时候,遇到了点问题.因为字符串成员变量无法直接获取字符串内容.p ...

  6. Vim Gtags插件

    01.Gtags func:查看定义处 02.Gtags -r func:查看引用处 03.Gtags -s text:查看未被数据库定义的tags 04.copen:打开quick fix显示窗口 ...

  7. request对象常用API 获取请求参数的值 request应用 MVC设计模式

    1 request对象常用API   1)表示web浏览器向web服务端的请求   2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1     ...

  8. windows 远程桌面连接 RPi 2B

    /************************************************************************* * windows 远程桌面连接 RPi 2B * ...

  9. 【jsonp】

    function handleResponse(response) { alert("You’re at IP address " + response.ip + ", ...

  10. 【转】 C++中如何在一个构造函数中调用另一个构造函数

    在C++中,一个类的构造函数没法直接调用另一个构造函数,比如: #ifndef _A_H_ #define _A_H_ #include <stdio.h> #include <ne ...