iOS 代码块Block

代码块的简单申明使用 :

//代码块 也是一种类型

                

        //无返回值   代码块名    参数(一个)

        //申明代码块

        void (^myBlock)(NSString *s);

        //代码块赋值

        myBlock = ^(NSString *s){

            NSLog(@"%@",s);

        };

        //调用代码块

        myBlock(@"你好 代码块");

        

        

        //有返回值的代码块的申明赋值

        int(^add)(int a,int b) = ^(int a,int b){

            return a+b;

        };

        //调用

        int sum = add(1,2);

        NSLog(@"%d",sum);

        

        

        //代码块做参数

        //申明

        int(^blockAdd)(int a,int b);

        //赋值

        blockAdd = ^(int a,int b){

            return a+b;

        };

        //传递代码块名

        blockCode(blockAdd);

        //直接传递代码块的值

        blockCode(^(int a,int b){

            return a-b;

        });

        


        

        //代码块排序

        NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithObjects:@"ADS",@"DSDS",@"FWE",@"CIJKLJ",@"BDGS", nil];

        [mutableArray sortUsingComparator:^NSComparisonResult(id x,id y){

            //升序

            return [x compare:y];

            //倒序

            //return -1*[x compare:y];

        }];

        NSLog(@"%@",mutableArray);

        

        

        //  代码块中 修改数值

        __block int c= 10;

        void(^blockChange)(int a,int b) = ^(int a,int b){

        

     //注意:只有 c 是全局变量 局部变量 要定义成__block 才能修改

            c++;

            NSLog(@"%d",c);

        };

        //调用

        blockChange(1,2);

        

================================================================================
代码块作为回调
模拟下载MP3例子


#import <Foundation/Foundation.h>

#import "DownLoad.h"

@interface View : NSObject

//数据

@property(assign,nonatomic)int data;

//保存数据

-(void)save;

@end


.m

#import "View.h"


@implementation View

-(void)save

{

    DownLoad *down = [[DownLoad alloc] init];

    //代码块的回调    vdata downMp3的实现方法中改变了 它的值  然后再 赋给 属性 data

    [down downMp3:^(int vdata){

        self.data = vdata;

    }];

    NSLog(@"下载了:%d",self.data);

}

@end


DownLoad类

#import <Foundation/Foundation.h>

//定义block类型

typedef void (^blockDown)(int data);



@interface DownLoad : NSObject

//-(void)downMp3:(void (^blockDown)(int data))block;

-(void)downMp3:(blockDown)block;


@end

.m

#import "DownLoad.h"


@implementation DownLoad

-(void)downMp3:(blockDown)block

{

     NSLog(@"正在下载数据...");

    //假设从网上下载了 数据1000

    int data = 1000;

    //代码块回调 把数据传到 View

    block(data);//说明:1000作为参数传到

    NSLog(@"完成");

}

@end

main里面

  //代码块作为参数

        View *view = [[View alloc] init];

        [view save];




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值