objective-c基础之block

原创 2015年11月19日 22:04:52
block基本使用
#import <Foundation/Foundation.h>


int main00() {

//    //block的使用
//    void (^print)(void) = ^(void)
//    {
//        NSLog(@"我正在学习objective C :block");
//    };
//    print();
//    //无返回值无参数
//    
//    double (^sumD)(double,double) = ^(double a,double b)
//    {
//        return a+b;
//    };
//    double sum = sumD(10.4,20.4);
//    NSLog(@"%lf",sum);
//    //有返回值,有参数
//    
//    void (^printStr)(NSString*);
//    printStr = ^(NSString *str){
//        NSLog(@"%@",str);
//    };
//    //无返回值,有参数
//    printStr(@"hahahah");
    
    //注意点
    //1.默认局部变量在block中是可以访问的,但是不能修改 2.在执行的过程中block是要使用的局部的值,在定义block的时候就写死了,所以是20,不是45
    
//    int my = 20;
//    void (^print)(void) = ^()
//    {
//        //my = 30;
//        NSLog(@"%d",my);
//    };
//    
//    my = 45;
//    print();
    //解决方法:__block 去修饰这个
    __block int my = 20;
    void (^print2)() = ^()
    {
        NSLog(@"%d",my);
        my = 30;
        NSLog(@"%d",my);
        //my = 40;
    };
    print2();

    
    return 0;
}
block+typedef 复用+回调
<pre name="code" class="objc">#import <Foundation/Foundation.h>

//typedef功能 1.复用block类型   2.使用block做函数参数时使用

typedef void (^FKProcessBlock)(int);

void processArray(int array[],unsigned int len,FKProcessBlock process)
{
    for(int i=0;i<len;i++)
    {
        process(array[i]);
    }
}//回调:你调用别人的函数,在别人的函数中引用你自己的函数,你中有我,我中有你


int main()
{
//    typedef void (^PrintBlock)(NSString *str);
//    
//    PrintBlock print = ^(NSString *info)
//    {
//        NSLog(@"%@",info);
//    };
//    
//    PrintBlock printLoop = ^(NSString *info)
//    {
//        for(int i=0;i<3;i++)
//        {
//            NSLog(@"%@",info);
//        }
//    };
//    
//    print(@"oc ...");
//    printLoop(@"ios");
    int arr[] = {2,4,6};
    processArray(arr, 3, ^(int num)
                 {
                     NSLog(@"%d",num*num);
                 });
    
    
    
    return 0;
}





Objective-c - block作为函数的参数

/* Objective-c - block作为函数的参数       1> block做为一种数据类型,可以做为方法或者函数的参数.       2> 将b...
  • xuezhangjun0121
  • xuezhangjun0121
  • 2017年01月11日 21:18
  • 510

语法基础——Objective-C语法基础

iOS基础——Object-C基础 学习过Swift之后,好久没用已经生疏了,现在有项目来了,不得不停下手下的工作,开始学习OC (1)...
  • qq_30379689
  • qq_30379689
  • 2017年02月21日 19:37
  • 2261

SEL(去除警告)、Block(block深入研究、block回调--匿名函数)

SEL: SEL:全称Selector 表示方法的存储位置。SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去寻找对应的方法地址,找到方法地址后就可以调用方法。SEL这种类型的数据,保...
  • u010165653
  • u010165653
  • 2014年11月26日 17:03
  • 660

OC基础-零基础学习Objective-C:第一部分.类和对象

本人也是Objective-C的小白,以下只是记录我学习过程的历程,如有不对的地方或者疑问欢迎指正。 原发表在新浪微博上,现转移到这里 必备工具: 1.一本书,建议《Objective-C基础教程...
  • l522402543
  • l522402543
  • 2015年08月28日 21:45
  • 951

iOS block传值(逆传)

block是个好东西,是苹果官方推荐的一种方法,效率高,代码简单,今天用block主要是做一个简单传,暂时不对block详细介绍,关于__block的用法,后期会一一介绍; 接下来,通过一个block...
  • Arodung
  • Arodung
  • 2016年05月31日 23:36
  • 1034

Objective-C入门基础

Objective-C是一种简单的计算机语言,设计为可以支持真正的面向对象编程。Objective-C通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的ANSI...
  • u011877416
  • u011877416
  • 2013年10月26日 10:45
  • 4124

Objective-C 2.0 基础要点归纳

本文的阅读基本条件: 具备C/C++基础知识,了解面向对象特征 阅读过《Objective-C 2.0 程序设计(第二版)》、《Objective-C 程序设计 第6版》或相关基础OC书籍 知识要点...
  • gujinjin2008
  • gujinjin2008
  • 2015年07月18日 20:11
  • 1580

Objective-C基础语法规则教程

Objective-C基础语法规则教程简介Objective-C是一种简单的面向对象的计算机语言。Oobjective-C扩展了标准的ANSI C语言。类的语法和设计主要是基于Smalltalk,最早...
  • Felix_Smile
  • Felix_Smile
  • 2016年09月18日 13:20
  • 213

iOS开发学习第十九课——匿名函数 Block

//Block的定义:Block也是一个函数,称为一个语法块(实现某个特定功能),只不过Block是一个比较特殊的函数,没有函数名称的函数,又叫做匿名函数 格式: 返回值类型 (^Bloc...
  • sen147258369
  • sen147258369
  • 2015年06月16日 09:57
  • 327

Objective-C基础笔记(6)Block

Block(代码段)封装了一段代码,可以在任何时候执行。Block可以作为函数参数或者函数返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:block是inline(内联...
  • lxq_xsyu
  • lxq_xsyu
  • 2014年11月17日 21:52
  • 1908
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:objective-c基础之block
举报原因:
原因补充:

(最多只允许输入30个字)