IOS开发block的使用

一个简单的block的定义:

(void)(^myblock)()=^{
     NSLog(@"------block输出----");
};

//调用blockmyblock();

有参数和返回值的block

(int)(^blockAdd)(int,int)=^(a,b){
   return a+b;
};//调用blockint sun = blockAdd(4,6);  // 10

Block可以访问局部变量,但是默认情况下不能修该。

1如何传递一个block

- (void)useWithBlock:(void(^)())myblock{
  myblock();
}

// 调用[对象 useWithBlock:^{  NSLog(@"-------为方法参数传递一个block--------");}];

IOS开发block的使用,布布扣,bubuko.com

时间: 2024-10-16 10:04:03

IOS开发block的使用的相关文章

iOS开发——Block引起循环引用的解决方案

内存问题始终是软件开发中的头等大事,iOS开发中也不例外,在面试中也是必问的问题.今天我们主要来讲讲Block中涉及的循环引用问题.当我们自己一开始写代码的时候,可能会大量在block中使用self,但是当看到别人优秀的代码的时候,发现别人常常不是用self,而使用weakSelf. 为什么呢?本文的示例代码上传至 https://github.com/chenyufeng1991/Block_WeakSelf . 首先我先来说说内存管理的原则: 1.默认使用strong,可选weak.stro

ios开发 Block(一) 代码块

一.什么是Blocks      Block是一个C级别的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似,但是其运行需要编译器和运行时支持,从ios4.0开始就很好的支持Block. 二.在ios开发中,什么情况下使用Block      Block除了能够定义参数列表.返回类型外,还能够获取被定义时的词法范围内的状态(比如局部变量),并且在一定条件下(比如使用__block变量)能够修改这些状态.此外,这些可修改的状态在相同词法范围内的多个block之间是共享的,即便出了该词法范围

iOS开发-Block回调

关于Block之前有一篇文章已经写过一篇文章Object-C-代码块Block回顾,不过写的比较浅显,不能体现出Block在实际开发中的重要性,关于Block的基础知识,可以参考之前的博客.在实际开发中Block在回调过程中的是非常适合开发使用,不管是苹果的官方的接口还是一些第三方库的接口中都用到了Block回调.很多情况下Block和GCD一起使用,最常见的场景的就是App去后台取数据的过程中是需要时间,数据取成功之后我们才能更新UI页面,这就是最常见的回调的方式,也可以通过Notificat

iOS开发 Block的用法

一:在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别:blocks是inline运行时使用的,并且它对局部变量是只读的;而在c语言中函数指针是在编译时就运行. int (^myBlock)(int ,int) = ^(int a, int b){return a ;}; 等号左边表示block的定义 ,右边表示 block的实现体 左边 int 表示 返

ios开发 Block(二) 实现委托

委托和block是IOS上实现回调的两种机制.Block基本可以代替委托的功能,而且实现起来比较简洁,比较推荐能用block的地方不要用委托. 实现效果如图 第一步,自定义CustomCell 1 #import <Foundation/Foundation.h> 2 3 @interface CustomCell : UITableViewCell 4 5 @property (strong, nonatomic) IBOutlet UILabel *labName; 6 @property

IOS开发—block对外部变量的内存管理

block对外部变量的内存管理 代码块在ios中通常用于回调,本文主要介绍block对外部变量的管理机制.我们知道如果要在block中使用block外面的变量,如果该变量是局部变量,就要先将其申明为__block类型.为什么呢?这就涉及到block对外部变量的内存管理. 一.基本数据类型 先看下面测试代码: //局部变量 - (void)localDataTest { int localData = 100; NSLog(@"localData --%p",&localData

iOS开发Block的介绍以及Block的循环引用问题

1:block的循环引用问题最主要记住两点: 如果[block内部]使用[外部声明的强引用]访问[对象A], 那么[block内部]会自动产生一个[强引用]指向[对象A] 如果[block内部]使用[外部声明的弱引用]访问[对象A], 那么[block内部]会自动产生一个[弱引用]指向[对象A] 2: #import "ViewController.h" #import "XMGPerson.h" @interface ViewController () @prop

IOS开发-block的使用

这几天在在工程中总会用到block传值以及传方法,今天对block进行了整理. block代码块主要用于对象之间的通信(反向传值和方法传递). 首先,我们从内存管理方面来了解一下block block:我们称代码块,他类似一个方法.而每一个方法都是在被调用的时候从硬盘到内存,然后去执行,执行完就消失,所以,方法的内存不需要我们管理,也就是说,方法是在内存的栈区.所以,block不像OC中的类对象(在堆区),他也是在栈区的.如果我们使用block作为一个对象的属性,我们会使用关键字copy修饰他,

玩转 IOS 开发 - block 使用详解

1. block作用: Block用来封装一段代码,可以在任何时候执行: Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 苹果官方建议尽量多用block.在多线程.异步任务 .集合遍历.集合排序.动画转场用的很多 2. Block的定义: int (^MySum)(int, int) = ^(int a, int b) { return a+b; }; 如上面代码定义了一个叫MySum的blocks对象,它带有两个int参数,返回int.等式右边就 是blocks