Block 讲解(基础)
来源:互联网 发布:网络机顶盒怎么连wifi 编辑:程序博客网 时间:2024/05/05 22:18
Block块语法本质上和其它的变量类似,不同的是它存储的数据是一个函数体,类似Java中的匿名方法,和C宇宙严重的函数指针。你可以像调用其他标准函数一样,传入参数以后,可以得到返回值
脱字符(^)是块语法的标记,按照我们熟悉的语法规定所定义的返回值急块的主题(也就是可以执行的代码)。
int multiplier =7;
int(^myBlock)(int) = ^(int num) {return num *multiplier;}
以上例子
用Xcode新建一个工程,选择OSX 中的命令行
#import <Foundation/Foundation.h>
//plas函数
int plas(int a)
{
return a*10;
}
int main(int argc,constchar * argv[])
{
//声明整型变量
int tempNum =7;
//声明函数
//int plas(int a);
//返回值 函数名 (参数列表)
//声明函数指针,指向刚才的函数
//返回值(*变量名)(参数列表)
int(* temp)(int a) =plas;
NSLog(@"%d", temp(7));
//返回值(^对象名)(参数列表)
//声明一个带有1个整型参数和整型返回值的Block对象
int (^tempBlock1)(int value1,int value2 ) = ^(int value1,int value2)
{
return value1 * value2;
};
int (^tempBlock2)(int value) = ^(int value)
{
return value*tempNum;
};
NSLog(@"Block1对象的计算结果:%d", tempBlock1(6,7));
NSLog(@"Block2对象的计算结果:%d", tempBlock2(6));
//Block对象与函数与函数指针相比
//1.Block对象的实现过程可以在函数(方法)体内声明;
//2.Block对象的实现过程可以只接使用(限制)实现过程以外的已经声明的变量
//3.BLlock对象中,不能对实现过程以外的变量做修改,必须增加关键字__block才可以修改
__blockint block_tem =8;
void (^incre)() = ^{
NSLog(@"Block对象内部修改变量的结果:%d", ++block_tem);
};
NSLog(@"调用前:%d", block_tem);
incre();
NSLog(@"调用后:%d", block_tem);
//实例,排序下面这个无序数组
NSMutableArray *mutableArray = [[NSMutableArrayalloc]initWithObjects:@"3",@"2",@"5",@"6",@"9",@"1",@"7",nil];
/*冒泡排序 方法一
for (int i = 0; i<mutableArray.count; i++) {
for (int j = 0; j<mutableArray.count-1-i; j++) {
if ([mutableArray[j] integerValue] >[mutableArray[j+1] integerValue]) {
NSString *temp = mutableArray[j];
mutableArray[j] = mutableArray[j+1];
mutableArray[j+1] = temp;
}
}
}
*/
//OC方法,只能排成升序 方法二
//[mutableArray sortUsingSelector:@selector(compare:)];
//Block对象的应用 方法三
/*[mutableArray sortUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [obj1 compare:obj2];
}];
*/
//Block 降序
[mutableArraysortUsingComparator:^NSComparisonResult(NSString *obj1,NSString *obj2) {
if ([obj1compare:obj2] ==NSOrderedAscending) {
returnNSOrderedDescending;
}
if ([obj1compare:obj2] ==NSOrderedDescending) {
returnNSOrderedAscending;
}
returnNSOrderedSame;
}];
NSLog(@"%@", mutableArray);
return0;
}
这只是简单的讲解BLOCK 这个东西,真正的用途还需要慢慢去掌握,其实他就像是一个协议
- Block 讲解(基础)
- iOS开发基础block的形式讲解
- block讲解
- block原理详细讲解(一)
- block原理详细讲解(二)
- block原理详细讲解(三)
- Block介绍(一)基础
- Block介绍(一)基础
- Block介绍(一)基础
- Block介绍(一)基础
- Block介绍(一)基础
- Block介绍(一)基础
- Block介绍(一)基础
- objective-c block 讲解
- objective-c block 讲解
- objective-c block 讲解
- objective-c block 讲解
- objective-c block 讲解
- 适合编程的字体
- sql server2005变成单个用户后不能访问,设置成多个用户的办法
- sax中DefaultHander解析xml过程和先后顺序
- 输入/输出
- windows编程(一)——MessageBox函数引出来的话题
- Block 讲解(基础)
- Hive笔记--安装
- 剑指offer:面试的基础知识(二)
- C-stdio流的简单应用(3)
- C#——set和get
- 悠悠春天的味道
- CKEDITOR使用与配置
- Linux静态IP设置
- 关于虚函数的继承和const对象及函数重载