objective-c基础之block
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基础
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

objective-c基础之block

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭