iOS 代码块Block
2013-08-19 17:24
295 查看
代码块的简单申明使用 :
//代码块
也是一种类型
//无返回值
代码块名
参数(一个)
//申明代码块
void (^myBlock)(NSString *s);
//代码块赋值
myBlock = ^(NSString *s){
NSLog(@"%@",s);
};
//调用代码块
myBlock(@"你好
代码块");
//有返回值的代码块的申明赋值
int(^add)(int a,int b) = ^(int a,int b){
return a+b;
};
//调用
int sum = add(1,2);
NSLog(@"%d",sum);
//代码块做参数
//申明
int(^blockAdd)(int a,int b);
//赋值
blockAdd = ^(int a,int b){
return a+b;
};
//传递代码块名
blockCode(blockAdd);
//直接传递代码块的值
blockCode(^(int a,int b){
return a-b;
});
//代码块排序
NSMutableArray *mutableArray = [[NSMutableArray
alloc] initWithObjects:@"ADS",@"DSDS",@"FWE",@"CIJKLJ",@"BDGS",
nil];
[mutableArray
sortUsingComparator:^NSComparisonResult(id x,id y){
//升序
return [x compare:y];
//倒序
//return -1*[x compare:y];
}];
NSLog(@"%@",mutableArray);
//
代码块中 修改数值
__block int c=
10;
void(^blockChange)(int a,int b) = ^(int a,int b){
//注意:只有
当 c
是全局变量 局部变量
要定义成__block 才能修改
c++;
NSLog(@"%d",c);
};
//调用
blockChange(1,2);
================================================================================
代码块作为回调
模拟下载MP3例子
#import <Foundation/Foundation.h>
#import "DownLoad.h"
@interface View : NSObject
//数据
@property(assign,nonatomic)int data;
//保存数据
-(void)save;
@end
.m
#import "View.h"
@implementation View
-(void)save
{
DownLoad *down = [[DownLoad
alloc] init];
//代码块的回调 vdata在 downMp3的实现方法中改变了
它的值
然后再 赋给
属性 data
[down
downMp3:^(int vdata){
self.data = vdata;
}];
NSLog(@"下载了:%d",self.data);
}
@end
DownLoad类
#import <Foundation/Foundation.h>
//定义block类型
typedef
void (^blockDown)(int data);
@interface DownLoad :
NSObject
//-(void)downMp3:(void (^blockDown)(int data))block;
-(void)downMp3:(blockDown)block;
@end
.m
#import "DownLoad.h"
@implementation DownLoad
-(void)downMp3:(blockDown)block
{
NSLog(@"正在下载数据...");
//假设从网上下载了
数据1000
int data = 1000;
//代码块回调
把数据传到 View类
block(data);//说明:1000作为参数传到
NSLog(@"完成");
}
@end
main里面
//代码块作为参数
View *view = [[View
alloc] init];
[view
save];
//代码块
也是一种类型
//无返回值
代码块名
参数(一个)
//申明代码块
void (^myBlock)(NSString *s);
//代码块赋值
myBlock = ^(NSString *s){
NSLog(@"%@",s);
};
//调用代码块
myBlock(@"你好
代码块");
//有返回值的代码块的申明赋值
int(^add)(int a,int b) = ^(int a,int b){
return a+b;
};
//调用
int sum = add(1,2);
NSLog(@"%d",sum);
//代码块做参数
//申明
int(^blockAdd)(int a,int b);
//赋值
blockAdd = ^(int a,int b){
return a+b;
};
//传递代码块名
blockCode(blockAdd);
//直接传递代码块的值
blockCode(^(int a,int b){
return a-b;
});
//代码块排序
NSMutableArray *mutableArray = [[NSMutableArray
alloc] initWithObjects:@"ADS",@"DSDS",@"FWE",@"CIJKLJ",@"BDGS",
nil];
[mutableArray
sortUsingComparator:^NSComparisonResult(id x,id y){
//升序
return [x compare:y];
//倒序
//return -1*[x compare:y];
}];
NSLog(@"%@",mutableArray);
//
代码块中 修改数值
__block int c=
10;
void(^blockChange)(int a,int b) = ^(int a,int b){
//注意:只有
当 c
是全局变量 局部变量
要定义成__block 才能修改
c++;
NSLog(@"%d",c);
};
//调用
blockChange(1,2);
================================================================================
代码块作为回调
模拟下载MP3例子
#import <Foundation/Foundation.h>
#import "DownLoad.h"
@interface View : NSObject
//数据
@property(assign,nonatomic)int data;
//保存数据
-(void)save;
@end
.m
#import "View.h"
@implementation View
-(void)save
{
DownLoad *down = [[DownLoad
alloc] init];
//代码块的回调 vdata在 downMp3的实现方法中改变了
它的值
然后再 赋给
属性 data
[down
downMp3:^(int vdata){
self.data = vdata;
}];
NSLog(@"下载了:%d",self.data);
}
@end
DownLoad类
#import <Foundation/Foundation.h>
//定义block类型
typedef
void (^blockDown)(int data);
@interface DownLoad :
NSObject
//-(void)downMp3:(void (^blockDown)(int data))block;
-(void)downMp3:(blockDown)block;
@end
.m
#import "DownLoad.h"
@implementation DownLoad
-(void)downMp3:(blockDown)block
{
NSLog(@"正在下载数据...");
//假设从网上下载了
数据1000
int data = 1000;
//代码块回调
把数据传到 View类
block(data);//说明:1000作为参数传到
NSLog(@"完成");
}
@end
main里面
//代码块作为参数
View *view = [[View
alloc] init];
[view
save];
相关文章推荐
- iOS_block代码块
- [ios开发基础之]代码块 ——block
- IOS Block 代码块使用 (二)
- IOS中得block代码块的定义及使用
- IOS中得block代码块的定义及使用
- iOS开发-进阶:代码块 block
- iOS block代码块
- iOS之Block代码块的定义及使用
- iOS block代码块强引用问题
- iOS代码块Block
- IOS中得block代码块的定义及使用
- IOS Block代码块的定义与使用
- ios开发 Block(一) 代码块
- iOS中得block代码块的定义及使用
- IOS Block代码块的简单使用
- iOS:使用block代码块实现事件处理过程中的回调
- IOS学习之block代码块
- IOS Block 代码块使用 (一)
- IOS中得block代码块的定义及使用
- IOS学习之block代码块