iOS Block(一)
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_func1)(int,int) = ^(int a,int b){
return a+b;
};
//例(2)
void (^block_func2)(int)=^(int a){ NSLog(@"%i",a); };
//例 (3)
NSString *(^block_func3)(void)=^(){
return @"测试无参有返回值的block";
};
3.2
(1)使用typedef 给block取别名
typedef int(^MyBlock)(int a,int b); //使用时
MyBlock = ^(int a,int b) {
return a+b;
};
(2)若想再在"block内"使用"block外"定义的变量,需要使用 __block 修饰
__block int sum = 0;
MyBlock myblock3 = ^(int a,int b) {
sum = a+b;
return 10;
};
int c = myblock3(2,2);
NSLog(@"sum = %i,c = %i", sum, c);
4、block做属性
typedef void (^ReturnSelectedCityName)(NSString * name);
@interface LXBAddCityVC : UIViewController
@property(nonatomic,strong)ReturnSelectedCityName selectedCityName;//arc下使用strong,编译器会自动将其复制到堆上;MRC下使用copy,将其复制到堆上 @end
//使用时:
LXBAddCityVC *addVC = [[LXBAddCityVC alloc]init];
addVC.selectedCityName = ^(NSString *name){
//block代码
};
5、block与代理
区别:使用block,不需要定义代理,也可以完成传值,且是"一对多"。
使用代理,需要遵守协议,然后实现代理中的一些方法,代理是"一对一"的。
例如:@property(nonatomic,weak)id<Delegate> delegate; //代理
@property(nonatomic,strong)Myblock mybock;
iOS Block(一)的更多相关文章
- iOS Block界面反向传值
在上篇博客 <iOS Block简介> 中,侧重解析了 iOS Block的概念等,本文将侧重于它们在开发中的应用. Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C ...
- iOS block从零开始
iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void ...
- iOS block 机制
本文要将block的以下机制,并配合具体代码详细描述: block 与 外部变量 block 的存储域:栈块.堆块.全局块 定义 块与函数类似,只不过是直接定义在另一个函数里,和定义它的那个函数共享同 ...
- ios Block详细用法
ios Block详细用法 ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的 ...
- iOS Block的本质(四)
iOS Block的本质(四) 上一篇文章iOS Block的本质(三)中已经介绍过block变量的捕获,本文继续探寻block的本质. 1. block内修改变量的值 int main(int ar ...
- # iOS Block的本质(三)
iOS Block的本质(三) 上一篇文章iOS Block的本质(二)中已经介绍过block变量的捕获,本文继续探寻block的本质. 1. block对对象变量的捕获,ARC 环境 block一般 ...
- iOS Block的本质(二)
iOS Block的本质(二) 1. 介绍引入block本质 通过上一篇文章Block的本质(一)已经基本对block的底层结构有了基本的认识,block的底层就是__main_block_impl_ ...
- iOS Block的本质(一)
iOS Block的本质(一) 1.对block有一个基本的认识 block本质上也是一个oc对象,他内部也有一个isa指针.block是封装了函数调用以及函数调用环境的OC对象. 2.探寻block ...
- (译)IOS block编程指南 1 介绍
Introduction(介绍) Block objects are a C-level syntactic and runtime feature. They are similar to stan ...
- [IOS Block和delegate的对比]
原文:http://blog.sina.com.cn/s/blog_9e8867eb0102uykn.html 这篇文章建议和前一篇一起看, 另外先弄清楚IOS的block是神马东东. 委托和bloc ...
随机推荐
- Flex知识备忘
div被flex遮挡 //如果设置z-index无效,那么设置flex加载参数 params.wmode = "Opaque";
- 修复AWS上EC2损坏的sshd_config文件
常识: AWS是没有root用户的,登陆也都是通过SSH KEY完成授权认证. 背景: 正在AWS上搭一个CI (GO),与gitlab,为了将其进行集成,需将gitlab的deploy key设置成 ...
- [Python] Basic operations in Pycharm
From: http://learnpythonthehardway.org/book Comment with line comment: Ctrl + slash Run: Shift + F10 ...
- Hadoop第1~2周练习—Hadoop1.X和2.X安装
练习题目 Hadoop1.X安装 2.1 准备工作 2.1.1 硬软件环境 2.1.2 集群网络环境 2.1.3 安装使用工具 2.2 环境搭建 2.2.1 安 ...
- 设计师必备!免费下载 PSD 素材的32个网站
今天我想和大家分享一组可以免费下载 PSD 图形素材的最好的网站. PSD 文件是非常有用的资源,因为你可以看到所有的层,使用了什么技术来创建出这些作品和效果. 某些列出的网站可能已是众所周知的,但你 ...
- Direct2D开发:纹理混合
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 我们都知道Direct2D可以加载并显示图片,但是不知道你有没有想过,这个2D的图形引擎可以进行纹理混合吗?如果 ...
- 另一个 OleDbParameterCollection 中已包含 OleDbParameter 错误分析及解决办法
程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加1.也就是执行不同的两个SQL语句操作同一个表,并且这两个SQL的参数是一样的.在一个函数里完成这个调用.执行第二个 ...
- CentOS6.5菜鸟之旅:VirtualBox4.3识别USB设备
一.前言 VirtualBox默认是不能识别USB设备的,但可以通过Oracle VM VirtualBox Extension Pack来增强VirtualBox的功能,增强的功能如下: 1. US ...
- TreeSet与TreeMap浅解
TreeSet与TreeMap的关系: 1.TreeSet 实际上就是用TreeMap来组织数据的,因为在TreeSet中保存了一个NavigableMap<e,Object>接口实例变量 ...
- Build 2016概览
很快Microsoft Build 2016马上就要开始,在直播放出来之前,微软已经提前把本次大会期间的所有课程列表放了出来,你可以在这里看到: https://channel9.msdn.com/E ...