码迷,mamicode.com
首页 > 其他好文 > 详细

OC基础 block使用

时间:2020-07-08 22:59:33      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:void   代码   局部变量   停止   block   obj   enumerate   type   使用   

main

 

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray* array=@[@1,@2,@3,@4];//[NSNumber numberWithInteger:1]
        [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            NSLog(@"obj:%@,idx:%lu,stop:%d",obj,idx,*stop);
            *stop=YES; // *stop
            
//            对遍历的控制,想要让遍历过程停止的时候,将它调成yes就可以了;
           
            //block直译区块,它封装了一段代码,可以在任何时候执行,和传统的函数指针类似,可携带参数个返回值
            
//            返回类型(^block名称)(参数列表)
//            -int(^Sum)(int,int)=^(int a,int b){ return a+b;};
//            -函数指针 int(*Sum)(int,int)

//            typedef int(^MySum)(int,int);
//            -MySum sum=^(int a,int b){return a+b};

//            调用block
//            -int a =Sum(10,11); NSLog(@"%i",a)
                       
        }];
        // block 声明
        void(^show)(id)=^(id obj){
            NSLog(@"obj%@",obj);
      
        };
        
        // block 使用
        show(array);
        
        //
        typedef int (^operation)(int,int);
        operation add=^(int a,int b){
            return a+b;
        };
        operation sub=^(int a,int b){
            return a-b;
        };
        int sum= add(10,20);
        NSLog(@"sum=%d",sum);
        
        // block 和局部变量的关系 可以访问局部变量
        __block int i=10;
        void(^print)()=^{
         i=20; //block 不能修改局部变量 可以修改__block 修饰的变量
            NSLog(@"i=%d",i);
            
        };
        
        print();
        
        
    
        
        
    }
    return 0;
}

 

OC基础 block使用

标签:void   代码   局部变量   停止   block   obj   enumerate   type   使用   

原文地址:https://www.cnblogs.com/zhangqing979797/p/13269625.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!