iOS学习-9 - 1 .Block 入门

来自李明杰的视频。

block 用来保存一段代码

block 的标志:^

block  跟函数很像

1).可以保存代码  2).有返回值  3). 有形参

temp1:没有返回值、没有形参的 block

如果 block 没有形参,可以省略 ()

void(^myblock)() = ^{
        NSLog(@"----------");
        NSLog(@"----------");
    };
    // 利用 block 变量调用 block 内部的代码
    myblock();

temp2:有返回值,有形参

int (^sumblock)(int,int) = ^(int a,int b){
        return a+b;
    };
    //返回值
    int c = sumblock(1,1);
    NSLog(@"%d",c);

temp 3:用一个 block 输出 n 条横线

void (^lineblock)(int) = ^(int n){
        for (int i = 1; i < n; i++) {
            NSLog(@"-------");
        }
    };
    //无返回值,加 int 类型的参数
    lineblock(5);

temp 4

__block int a = 10;
    void (^block)();
    block = ^{
        /*
         block 内部可以访问外面的变量
         默认情况下,block 内部不能修改外面的局部变量
         给局部变量加上 __block 关键字,这个局部变量就可以在block内部修改
        */
        a = 20;
        NSLog(@"%d",a);
    };
    block();

temp 5:使用 typedef 定义 block 类型

// 类型 + 变量
    MyBlock sumBlock;
    sumBlock = ^(int a,int b){
        return a+b;
    };
    sumBlock(10,9);
    //减法
    MyBlock minusBlock;
    minusBlock = ^(int a,int b){
        return a - b;
    };
    minusBlock(10,9);
    //乘法
    MyBlock multipBlock;
    multipBlock = ^(int a,int b){
        return a * b;
    };
    multipBlock(10,9);
    //除法
    MyBlock divideBlock;
    divideBlock = ^(int a,int b){
        return a / b;
    };
    divideBlock(10,2);

    NSLog(@"\n %d \n %d \n%d \n %d",sumBlock(10,9),minusBlock(10,9), multipBlock(10,9),divideBlock(10,2));

 总结:

1.如何定义 block 变量

int (^sumBlock)(int,int);
void (^myBlock)();

2.如何利用 block 封装代码

^(int a,int b){
        return  a - b;
    };
    //没有参数
    ^(){
        NSLog(@"-----");
    }
    //没有返回值
    ^{
        NSLog(@"-----");
    }

3.  block 访问外面变量

1.block 内部可以访问外面的变量
2.默认情况下,block 内部不能修改外面的局部变量3.给局部变量加上 __block 关键字,这个局部变量就可以在block内部修改

4.利用 typedef 定义 block 类型

typedef int(^MyBlock)(int,int);
    //以后就可以利用 MyBlock 这种类型来定义 block 变量
    MyBlock block;
    MyBlock b1,b2;

    b1 = ^(int a,int b){
    return a+b;
    };

    MyBlock b3 = ^(int a,int b){
    return a+b;
    };
时间: 2024-08-13 23:01:34

iOS学习-9 - 1 .Block 入门的相关文章

IOS学习之路--BLOCK

/* 1.定义block变量: 返回值类型 (^block变量名) (参数类型1, 参数类型2, ....); 2.给block变量赋值 block变量名 = ^(参数类型1 参数名称1, .....) { }; */ /* 1.设置动画属性 2.开始执行动画 3.动画执行完毕 block1 = ^{ 封装了动画开始执行前想做的事情 }; block2 = ^{ 封装了动画执行完毕后想做的事情 }; */ #import <Foundation/Foundation.h> //typedef

ios学习笔记之block在ios开发中的应用

一.什么是Blocks      Block是一个C级别的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似,但是其运行需要编译器和运行时支持,从ios4.0开始就很好的支持Block. 二.在ios开发中,什么情况下使用Block      Block除了能够定义参数列表.返回类型外,还能够获取被定义时的词法范围内的状态(比如局部变量),并且在一定条件下(比如使用__block变量)能够修改这些状态.此外,这些可修改的状态在相同词法范围内的多个block之间是共享的,即便出了该词法范围

iOS学习笔记11-多线程入门

一.iOS多线程 iOS多线程开发有三种方式: NSThread NSOperation GCD iOS在每个进程启动后都会创建一个主线程,更新UI要在主线程上,所以也称为UI线程,是其他线程的父线程. 线程和进程的区别傻傻分不清楚: 线程(thread):用于指代独立执行的代码段. 进程(process):用于指代一个正在运行的可执行程序,它可以包含多个线程. 二.NSThread NSThreadhi轻量级的多线程开发,需要自己管理线程生命周期 创建线程主要实现方法: /* 直接将操作添加到

IOS学习5-block

block的理解 1. 函数  void run(){}   保存一段代码, 函数只能方法外部定义 2. block 保存一段代码. 更灵活,可以在方法内部调用,零时变量 定义无返回: void (^block) = ^{}; 定义有返回:int  (^sum)(int , int ) = ^(int a, int b){ return a + b;} 3. typedef 定义block (通常变量定义  typedef int Myint) typedef int (^MyBlock)(in

2015最新iOS学习线路图

iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置的众多技术和功能让 Apple设备始终保持着遥遥领先的地位. iOS学习路线:http://www.mobiletrain.org/page/ios.html 课程分  类 课程模块 模块介绍 课程内容 Part1C语言 C语言和Objective-C语言 C语言 Mac系统及常用工具.进制:C数据

iOS 即时通讯,从入门到 “放弃”?

原文链接:http://www.jianshu.com/p/2dbb360886a8 本文会用实例的方式,将 iOS 各种 IM 的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. —— 由宇朋Look分享 前言 本文会用实例的方式,将iOS各种IM的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. 注:文中的所有的代码示例,在github中都有demo:iOS即时通讯,从入门到“放弃”?(demo)可以打开项目先预览效果,对照着进行阅读. 言归正传,首先我们来总

iOS学习资源收集

https://github.com/Tim9Liu9/TimLiu-iOS 自己总结的iOS.mac开源项目及库,持续更新.... github排名 https://github.com/trending,github搜索:https://github.com/search 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与Toast 对话框 其他UI 动画 侧滑与右滑返回手势 gif动画 其他动画 网络相关 网络连接 图像获取 网络

iOS 学习资料整理

视频教程(英文) 视频 简介 Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS SDK 的使用, 属于 iOS 基础视频 iPad and iPhone Application Development 该课程的讲师 Paul Hegarty 是斯坦福大学软件工程学教授, 视频内容讲解得深入, 权威, 深受好评 Advanced iPhone Development - Fall

【资源】IOS学习资料 - 逆天整理 - 精华无密版【最新】【精华】

 入门看视频,提高看书籍,飘升做项目.老练研开源,高手读外文,大牛讲低调~  01.IOS基础 01.iOS开发快速入门教程 http://pan.baidu.com/s/1kT3ScOf 链接: http://pan.baidu.com/s/1kTKheAF 密码: yycm 02.苹果开发零基础入门教程 http://pan.baidu.com/s/1dDfHL77 链接: http://pan.baidu.com/s/1o6iNkIu 密码: nn3a 03.黑马IOS2期基础 http: