iOS学习笔记---oc语言第六天
2014-07-01 10:38
260 查看
Block 、数组高级
block本质上就是匿名函数(没有名称的函数)
block语法和函数指针很相似
回顾函数
函数:C语⾔中,实现某一类功能的代码段。
完整的函数包含两部分:函数声明、函数定义
函数声明,即函数原型。例如:int sum(int x,int y);具有两个整型参 数,一个整型返回值的函数。
函数定义,即函数实现。例如:int sum(int x,int y){
retrun x + y;
}
回顾函数指针
函数指针(变量):存放函数地址(函数名)的指针变量。
int (*p)(int x,int y) = sum;
函数指针类型:int (*)(int x,int y) 即:指向 两个整型参数,一个整型返回值函数 的指针。
函数指针变量:p 函数指针的值:sum
Block
匿名函数:没有名称的函数。 例如 int (int x, int y)
因为Block是匿名函数,block变量存放的函 数的实现,通过block变量能直接调⽤用函数
没有名称的函数应该如何调⽤用?(有名称的话,可以直接调⽤用,也
可以通过函数指针来调⽤用)
block函数定义中返回值类型 可以省略 通常都会省略
在block体中可以直接使用外部变量,但是不能修改这个变量 想要修改在变量前面加__block;
__block等价于static,变量存储于全局区,程序运行过程中一直存在,直到程序运行结束
全局变量不需要使用__block,存储于全局区
block与数组排序
iOS中得字面量
Literals(字面量),是一种简易表示值得方法
字面量默认创建不可变的数组,字典等,要创建可变的要用完整的初始化方法创建
block本质上就是匿名函数(没有名称的函数)
block语法和函数指针很相似
回顾函数
函数:C语⾔中,实现某一类功能的代码段。
完整的函数包含两部分:函数声明、函数定义
函数声明,即函数原型。例如:int sum(int x,int y);具有两个整型参 数,一个整型返回值的函数。
函数定义,即函数实现。例如:int sum(int x,int y){
retrun x + y;
}
回顾函数指针
函数指针(变量):存放函数地址(函数名)的指针变量。
int (*p)(int x,int y) = sum;
函数指针类型:int (*)(int x,int y) 即:指向 两个整型参数,一个整型返回值函数 的指针。
函数指针变量:p 函数指针的值:sum
Block
匿名函数:没有名称的函数。 例如 int (int x, int y)
因为Block是匿名函数,block变量存放的函 数的实现,通过block变量能直接调⽤用函数
没有名称的函数应该如何调⽤用?(有名称的话,可以直接调⽤用,也
可以通过函数指针来调⽤用)
int (^block1)(int,int) = ^int (int x,int y) { return x + y; }; //类型 int(^)(int,int) //变量名 block1 //初始值 // ^int (int x,int y) // { // return x + y; // } typedef int (^BlockType)(int,int); BlockType block2 = ^ int (int x,int y){ return x * y; }; //给block 变量赋值时 值的特点:以 ^ 开头 函数的定义(实现),去掉函数名
block函数定义中返回值类型 可以省略 通常都会省略
int (^aa)() = ^(){ return 10; }; //当block没有参数的时候可以把函数定义后面的()省略掉 // int (^aa)() = ^{ // return 10; // }; NSLog(@"%d",aa()); void (^hello)() = ^{ NSLog(@"hello world"); }; hello();//没有返回值没有参数的block
在block体中可以直接使用外部变量,但是不能修改这个变量 想要修改在变量前面加__block;
__block等价于static,变量存储于全局区,程序运行过程中一直存在,直到程序运行结束
全局变量不需要使用__block,存储于全局区
block与数组排序
NSArray *arr = [NSArray arrayWithObjects:@"zhao",@"qian",@"sun",@"li",@"zhou",@"wu",@"zheng",@"wang", nil]; NSArray *sortedArray = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { return - [obj1 compare:obj2]; }]; //正常排序[obj1 compare:obj2] //反着排序 - [obj1 compare:obj2] //反着排序[obj2 compare:obj1] NSLog(@"%@",sortedArray);
iOS中得字面量
Literals(字面量),是一种简易表示值得方法
字面量默认创建不可变的数组,字典等,要创建可变的要用完整的初始化方法创建
相关文章推荐
- iOS学习笔记---oc语言第四天
- ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)
- iOS学习笔记---oc语言第一天
- iOS学习笔记---oc语言第十天
- iOS学习笔记---oc语言第三天
- iOS学习笔记---oc语言第八天
- iOS学习笔记---oc语言第五天
- iOS学习笔记---oc语言第九天
- iOS学习笔记---oc语言第二天
- iOS学习笔记---oc语言第七天
- 黑马训练营--IOS学习---OC语言学习总结2
- 黑马训练营--IOS学习---OC语言学习总结4
- IOS学习笔记02---语言发展概述,计算机语言简介.
- 黑马训练营--IOS学习---OC语言学习总结2
- IOS App入门开发进阶 第一课 OC语言基础学习
- 【初学】iOS学习笔记2-iOS模拟器简体中文系统语言更改
- ios 学习之OC语言总结1
- ios学习笔记之OC篇(一):复制对象的方法
- 一 :ios学习笔记 OC入门2 点语法
- 【初学】iOS学习笔记-@property @synthesize oc=_oc