iOS block详解学习
2015-11-01 03:45
267 查看
Block的定义格式
返回值类型 (^block变量名)(形参列表) = ^(形参列表) {
};
调用Block保存的代码
block变量名(实参);
使用typedef定义Block类型
typedef 返回值类型 (^block类型名称)(形参列表);
默认情况下, Block内部不能修改外面的局部变量
Block内部可以修改使用__block修饰的局部变量
.h
typedef void(^OperationBlock)();
@property(nonatomic,copy)OperationBlock operationBlock;//最好用copy
.m
/**
*block 最最关键是 一定先定义后 才能够调用(一定注意权限全局变量Block才能全局调用)
*
*/
/**
*头部定义
*/
typedef void(^Test)();
typedef void (^TestPar)(NSString*);
typedef NSString* (^TeturnAndPar)(NSString*,NSString*);
/**
*定义
*/
//习惯很重要 虽然 没有参数 在定义赋值右端还是写上() 因为结构上可以让你更有清楚思维
Test test=^(){
};
TestPar testparameter=^(NSString* par){
};
/**
*有返回值在定义 也要写返回值
*
*/
TeturnAndPar testAndPar=^(NSString *parter,NSString *parter2){
return parter;
};
/**
*调用
*
*/
test();
testparameter(@"努力奋斗");
testAndPar(@"奋斗",@"努力");
/**
*block的定义
*/
//无返回值 无参数
void(^testBlock)()=^{
LJKLOG(@"cao block");
};
//无返回值 有参数
void(^testParameterBlock)(NSString*,NSString*)=^(NSString *parameter1,NSString
*parameter){
[parameter stringByAppendingString:parameter1];
};
//有返回值 有参数
NSString*(^testReturnAnpar)(NSString*,NSString*)=^(NSString *par1,NSString *par2){
return [par1
stringByAppendingString:par2];
};
/**
*block的调用
*/
//无返回值 无参数
testBlock();
//无返回值 有参数
testParameterBlock(@"cao",@"nimei");
//有返回值 有参数
NSString *stringpp=testReturnAnpar(@"nima",@"SB");
LJKLOG(@"%@",stringpp);
返回值类型 (^block变量名)(形参列表) = ^(形参列表) {
};
调用Block保存的代码
block变量名(实参);
使用typedef定义Block类型
typedef 返回值类型 (^block类型名称)(形参列表);
默认情况下, Block内部不能修改外面的局部变量
Block内部可以修改使用__block修饰的局部变量
.h
typedef void(^OperationBlock)();
@property(nonatomic,copy)OperationBlock operationBlock;//最好用copy
.m
/**
*block 最最关键是 一定先定义后 才能够调用(一定注意权限全局变量Block才能全局调用)
*
*/
/**
*头部定义
*/
typedef void(^Test)();
typedef void (^TestPar)(NSString*);
typedef NSString* (^TeturnAndPar)(NSString*,NSString*);
/**
*定义
*/
//习惯很重要 虽然 没有参数 在定义赋值右端还是写上() 因为结构上可以让你更有清楚思维
Test test=^(){
};
TestPar testparameter=^(NSString* par){
};
/**
*有返回值在定义 也要写返回值
*
*/
TeturnAndPar testAndPar=^(NSString *parter,NSString *parter2){
return parter;
};
/**
*调用
*
*/
test();
testparameter(@"努力奋斗");
testAndPar(@"奋斗",@"努力");
/**
*block的定义
*/
//无返回值 无参数
void(^testBlock)()=^{
LJKLOG(@"cao block");
};
//无返回值 有参数
void(^testParameterBlock)(NSString*,NSString*)=^(NSString *parameter1,NSString
*parameter){
[parameter stringByAppendingString:parameter1];
};
//有返回值 有参数
NSString*(^testReturnAnpar)(NSString*,NSString*)=^(NSString *par1,NSString *par2){
return [par1
stringByAppendingString:par2];
};
/**
*block的调用
*/
//无返回值 无参数
testBlock();
//无返回值 有参数
testParameterBlock(@"cao",@"nimei");
//有返回值 有参数
NSString *stringpp=testReturnAnpar(@"nima",@"SB");
LJKLOG(@"%@",stringpp);
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中NSNumber与NSDictionary的用法简介
- Objective-C中NSLog输出格式大全
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- 以实例讲解Objective-C中的KVO与KVC机制
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构