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;
}





相关文章推荐

黑马程序员——ios基础---Objective-C:ARC、类别、Block、协议

一、ARC 1、ARC:在工程中使用ARC非常简单:只需要像往常那样编写代码,只不过永远不写retain,release和 autorelease三个关键字就好~这是ARC的基本原则。   2、...

Objective-C基础——block

Block 1> block是一种数据类型,block的标志^; 2> block封装了一段代码,可以在任何时候执行; 3> block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回...

Objective-c的Block基础

//  main.m //  Block // //  Created by lanou on 16/10/20. //  Copyright (c) 2016年 lanou. All...
  • ZGAaron
  • ZGAaron
  • 2016年10月25日 08:18
  • 81

Swift 中的闭包和 Objective-C 中的Block

  • 2017年03月08日 11:10
  • 1.17MB
  • 下载

Objective-C--block的概念和基本使用

Objective-C--block的概念和基本使用

Objective-C之Block、GCD好文章推荐

1、Block http://www.dreamingwish.com/article/block%E6%95%99%E7%A8%8B%E7%B3%BB%E5%88%97.html 2、GCD ht...

ios objective-c block

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

Objective-C语法之代码块(block)的使用

代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所定义...
  • hxl188
  • hxl188
  • 2013年05月02日 16:53
  • 414

objective-c---ARC、block、协议(protocol)

ARCARC概念 Automatic Reference Counting :自动引用计数 ARC的判断准则 只要没有强指针指向对象,就会释放对象 指针分为两种 1、强指针:默认情况下,所有的指针...
  • ikj1235
  • ikj1235
  • 2015年03月24日 21:38
  • 246

Objective-c - block的简写

/*  Objective-c - block的简写           1> block变量声明的语法:                               ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:objective-c基础之block
举报原因:
原因补充:

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