iOS开发总结(A0)- Block

1. 定义block

以返回NSInterger 接受bool 参数为例

1)作为参数

methodTakeBlockAsParamter: (NSInterger (^) (BOOL flag))blockName

2) 作为变量或者property

@property(copy, nonatomic)  NSInterger (^blockName) (BOOL flag);

3)typedef

typedef  NSInterger (^blockName) (BOOL flag);

2. 使用注意

1) 若在block 中设置block意外的变量,需要在变量加__block 标识(两个连续的下划线)

2) 若在block 中引用了拥有(strong 或者 retain)该block的对象,则构成了retain cycle, 需要创建一个指向该对象的变量,并用 __weak标志;

时间: 2024-12-05 07:39:21

iOS开发总结(A0)- Block的相关文章

IOS开发- 用block实现回调

在IOS开发中经常会用到回调的情况,下面介绍如何用block实现回调. 1 #import <Foundation/Foundation.h> 2 3 @interface BLock : NSObject 4 5 + (void)getBlock:(void (^)(NSString *))someblock; 6 7 @end BLock.h 1 #import "BLock.h" 2 #import <Foundation/Foundation.h> 3

ios开发——实用技术篇&amp;Block/KVO/通知/代理

Block/KVO/通知/代理简单介绍与使用 关于iOS开发中数据传递的方法有很多种,但是使用最多的就是这里的四种,而且我们要学会在适当的时候使用合适的方式,才能充分的提高app的性能 下面简单介绍一下这些方法的使用 Block 第一.综述 block是OC中另外一种对象和对象的通信方式,是一对一的关系,类似于delegate,而通知时一对多的关系 第二.定义block类型 int (^myBlock)(int) 第三.block的声明 mylock=^(int a) { int result

iOS开发Delegate,Notification,Block使用心得

(一)简要介绍 1.Delegate(代理.委托) 代理几乎是iOS开发中最常用的传值方式,在项目中的AppDelegate就是使用的这种设计模式,不仅如此,还有很多原生的控件也使用的这种设计模式,比如:UITextFiled,UITableView等等.官方给出的解释如下: Delegation is a simple and powerful pattern in which one object in a program 1 acts on behalf of, or in coordin

IOS开发-Object-C Block的实现方式

前言:我们可以把Block当作一个闭包函数,它可以访问外部变量和局部变量,但默认是不可以修改外部变量.你可以使用它来做回调方法,比起使用代理(Delegate)会更加直观.顺带一提,苹果很多的接口(API)都使用了Block. 一.Block的基本定义 Block的基本写法(也是详细写法): returnType (^blockName)(params) = ^returnType(params) { // code... }; 中文再解释:返回类型 (^Block的名字)(Block的参数)

IOS开发之---初识Block

正文 Block简介 我们可以把Block当做Objective-C的匿名函数.Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观.另外,block的实现具有封闭性(closure),而又能够很容易获取上下文的相关状态信息. Block的创建 实际上,block使用了与函数相同的机制:可以像声明函数一样,来声明一个bock变量:可以利用定义一个函数的方法来定义一个block:也可以将block当做一个函数来调用. 1 // main.m 2 #im

iOS开发——语法&amp;高级Block练习

高级Block练习 一 .最简单的block使用 使用block的三个步骤:1.定义block变量 2.创建block代码块 3.调用block匿名函数 定义一个block的构成包括:返回值,block名,参数类型. block代码块作为一个匿名函数是可以被写在其他方法中的,所以一般我们将block代码块写在其他方法里,调用该方法的时候block代码块将不会被执行,只有回调block代码块的时候,才会执行. ViewController.h 1 #import <UIKit/UIKit.h>

iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButton,其中UILabel是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第二个界面. 第二个界面的只有一个UITextField,是为了输入文字,当输入文字,并且返回第一个界面的时候,当第二个视图将要消失的时候,就将第二个界面上TextFiled中的文字传给第一个界面,并且显

iOS开发——代理与block传值

一.代理传值的方法 1.Hehe1ViewController.h中 #import <UIKit/UIKit.h> @protocol Hehe1ViewControllerDelegate <NSObject> - (void)backValueWith:(NSString*)str; @end @interface Hehe1ViewController : UIViewController @property(nonatomic,weak) id delegate; @en

iOS开发-语法篇-block详解

一:基本定义 /*初步上式block定义的一些理解和解释,接下来会详解: *block名为myBlock,结合C的函数指针,myBlock为block体的指针,指向block体的入口地址 *int result = myBlock(5) <==> ^(int num){return num*num}(5)//将5传给num *回调时可以将myBlock作为参数传入,也可以直接传入block体^(int num){…};// *整个block体作为参数传入时,往往没有参数,只是进行延迟运算作用,

【iOS开发-117】block为什么用copy?利用runtime运行时的objc_方法为分类扩充成员变量

(1)block - (void)viewDidLoad { [super viewDidLoad]; __block int a=10; NSLog(@"a=%d",a); void (^blockName)()=^{ a=20; }; NSLog(@"a=%d",a); blockName(); NSLog(@"a=%d",a); } --以上输出结果是10,10,20. --只要在变量前面增加__block,在block里面就可以修改该变量