Block
来源:互联网 发布:淘宝网分类 编辑:程序博客网 时间:2024/06/07 02:23
Block用法
1.从前往后传值直接用属性,从后往前传值用block2.两个不相关的页面进行传值
Block变量(不用typedef)
Block变量的定义: 返回值 (^变量名)(函数参数..)
返回值 (^变量名)(函数参数..)
Block变量函数的创建
//(1)int (^ myBlocks)(int);myBlocks = ^(int a){ int result = a * a; return result;};//(2)int (^ myBlocks)(int) = ^(int a){ int result = a * a; return result;};
Block类型(typedef)
Block类型的定义
typedef <#returnType#>(^<#name#>)(arguments);//定义Block函数类型,如下MyBlock是类型名,不是变量typedef int (^MyBlock)(int);
在方法中定义Block类型的参数
//(1)直接创建- (void)objectMethod:(int (^)(int))block { //直接运用block block(参数) ... ...}//(2)通过typedef创建typedef int (^MyBlock)(int);- (void)objectMethod:(MyBlock)block { //可通过全局的block进行copy,然后传值 _block = [block copy];}- (void)otherMethod { _block(参数)}
Block类型函数的实现
//(1)在方法中实现[self objectMethod:^(int a, int b) { return a+b;}];//(2)在block属性点语法赋值中实现class.block = ^(int a, int b) { ... ...}]:
Block函数的调用
if (myBlocks) { //先判断block是否存在再传值 myBlocks(10);}
Block传递参数的运用
Class1.h
Typedef (^Block) (参数);@interface Class1 : 父类{ Block _myBlock;}- (返回类型)method1:(Block)block;@end
Class1.m
@implementation Class1- (返回类型)class1Method1:(Block)block { //block参数用copy保存 _myBlock = [block copy];}- (返回类型)class1Method2:(参数类型)参数 { //传递参数 _myBlock(参数);}@end
Class2.h
@interface Class1 : 父类#import "Class1.h"@end
Class2.m
@implementation Class2-(返回类型)class2Method{ Class1 *class1 = [Class1 alloc] init]; [class2 class1Method:(参数类型 参数)^{ ... ... }];}@end
0 0
- Block
- block
- Block
- block
- block
- block
- block
- block
- block
- Block
- block
- Block
- Block
- Block
- Block
- block
- Block
- block
- 摩托车继承自行车和机动车
- solr入门之使用SolrJ进行安全认证和权限管理
- JavaEE的学习
- 游戏编程之五 DirectSound
- 分数类的运算符重载
- Block
- linux内核研究(二)
- js限制文本框只能输入数字方法小结
- Linux下使用libreoffice把doc转换成Pdf
- hiahia
- android应用程序第8课:CheckBox
- ddmlib-22.9.1.jar编译和简单应用
- 【jQuery】jQuery修改class属性和CSS样式
- Path Sum II 计算节点和符合条件的路径