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变量能直接调⽤用函数

没有名称的函数应该如何调⽤用?(有名称的话,可以直接调⽤用,也

可以通过函数指针来调⽤用)

    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 ;
};
//当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语言第六天的更多相关文章

  1. iOS学习笔记---oc语言第一天

    第一讲 初始类和对象 c语言的超集,允许在oc中使用c语言源代码.编译器兼容c语言程序 具备完善的面向对象特性 包含一个运行时系统 类库丰富 面向对象编程 oop 面向对象语言:c++  java   ...

  2. iOS学习笔记---oc语言第五天

    字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key- ...

  3. iOS学习笔记---oc语言第四天

    字符串 数组 一.使用苹果帮助文档 学会使⽤用苹果帮助⽂文档是开发者的⼀一项技能 Inherits from 继承⾃自 Conforms to 遵循什么协议 Framework 属于哪个框架 Avai ...

  4. iOS学习笔记---oc语言第三天

    继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量 ...

  5. iOS学习笔记---oc语言第九天

    初级内存管理 iOS应用程序出现crash(闪退),90%以上是内存问题////其他:数组越界,方法只声明没实现 内存问题体现在两个方面:内存溢出\野指针异常 内存溢出:程序运行超出内存上限 野指针异 ...

  6. iOS学习笔记---oc语言第二天

    实例变量与方法 一.实例变量的可见度 二.方法 oc中的方法分两种:类方法和实例方法 类方法:只能类使用 eg:+ (id)alloc  注:类方法中不能使用实例变量 实例方法:只能对象使用,eg:- ...

  7. iOS学习笔记---c语言第六天

    函数  function 命名规范:工程名第一个字母大写,变量函数名小写,不要用拼音和中文, eg:lessonFunction 一.函数声明定义 函数是具有特定功能的代码块        作用:模块 ...

  8. iOS学习笔记---oc语言第十天

    内存管理高级 一 属性的内部实现原理   assign   retain    copy assign 下的属性内部实现 setter方法 @property(nonatomic,assign)NSS ...

  9. iOS学习笔记---oc语言第八天

    属性 能在一定程度上简化代码,并且增强实例变量的访问安全性 属性的声明:使用@property声明属性  eg:@property NSSstring *name;相当于@interface中声明了两 ...

随机推荐

  1. 带你揭开ATM的神秘面纱

    相信大家都用过ATM取过money吧,但是有多少人真正是了解ATM的呢?相信除了ATM从业者外了解的人寥寥无几吧,鄙人作为一个从事ATM软件开发的伪专业人士就站在我的角度为大家揭开ATM的神秘面纱吧. ...

  2. adMob iAd整合,随机根据网络状况自动显示。

    最近找整合的代码,找到的都不对,有个大概对的,但要奔溃退出,只要两个单独弄. adMob 下载好sdk,导入进去,iAd的加入iad framework. 使用方法,在viewController v ...

  3. Java 时间、日期类

    1. System类 currentTimeMillis():返回当前时间的long型值.此long值是从1970年1月1日0点0分00秒开始到当前的毫秒数. 此方法常用来计算时间差. 2. Date ...

  4. C++-不要在构造和析构函数中调用虚函数

    在实习的单位搞CxImage库时不知为什么在Debug时没有问题,但是Release版里竟然跳出个Pure virtual function call error! 啥东西呀,竟然遇上了,就探个究竟吧 ...

  5. Session初识

    web服务器没有短期记忆,所以需要使用session来跟踪用户的整个会话活动.会话管理有3种解决方案: 1)使用隐藏域(很少使用) 在显示页面中使用隐藏域来保存会话ID.例如,在JSP中将input标 ...

  6. 自定义ImageView

    package com.example.myimageview; import android.content.Context;import android.graphics.Bitmap;impor ...

  7. Helloworld程序的创建以及配置文件的讲解

    创建项目. create Project 选择创建的Project类别以及使用的SDK,可能SDK需要配置或者修改配置. 这个页面是问你是否使用模板创建. Command Line App 会自动创建 ...

  8. 深入剖析HADOOP程序日志

    深入剖析HADOOP程序日志 前提 本文来自于 博客园 逖靖寒的世界 http://gpcuster.cnblogs.com 了解log4j的使用. 正文 本文来自于 博客园 逖靖寒的世界 http: ...

  9. printf的格式输出

    格式字符 意义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进制形式输出无符号整数(不输出前缀Ox) u 以十进制形式输出无符号整数 ...

  10. pyqt5 笔记(四)cx_Freeze 实现代码打包exe

    下载地址:https://pypi.python.org/pypi/cx_Freeze 教程:http://www.cnblogs.com/xinzaitian/archive/2010/12/10/ ...