iOS block

    /*

    // 函数调用

    NSLog(@"%d", sum(3, 5));

    

    

    // block block为匿名函数,也是一种类型,block里面存储的是函数体。“{函数体}”

    

    // block 的定义,根据类型定义

    int (^block1)(int a, int b) = ^(int x, int y){

        return x + y;

    };

    // block 类型 int(^)(int a, int b)具有两个整形参数,一个整形返回值的 block类型

    // int a  float a

    // block1 变量名

    // ^(int x, int y){ return x + y; };


    // block变量的使用函数使用一样变量名 +参数

    NSLog(@"%d", block1(3, 5));

    

    // 练习:定义个blockblock功能是把整形数字,转化为字符串

    NSString *(^block2)(int a) = ^(int a){

        return [NSString stringWithFormat:@"%d",a];

    };

    

    NSLog(@"%@",block2(5));

     */

    

    // block 的好处

    // 1. 用于回调

    // 2. 作为函数的参数,回调


// 注意: block类型的语义修饰为 copy,原因,把栈区的block参数,拷贝到堆区。

@property (nonatomic,copy)  XLBlock string;


 //MRC 写法

    // self不进行强引用, 不进行retain

    __blocktypeof(self) BlockSelf =self;

    

    // ARC 写法

    //__weak typeof(self) WeakSelf = self;

    secondVC.value = ^(NSString *string){

    

        // 把第二个界面的textField.text赋值给第一个界面的textField.text

        BlockSelf.textField.text = string;

        

    };



MRC释放

-  (void)dealloc {

    // block 释放的方式,使用释放函数释放

    Block_release(_myblock);

    [superdealloc];

}


iOS: 定义 Block

 定义

1
2
3
4
typedef  void  (^RFAudioBasicBlock) ( void );
typedef  void  (^RFAudioSuccessBlock) (BOOL flag);
typedef  void  (^RFAudioSuccessDetailBlock) (BOOL flag, NSURL *url, NSTimeInterval duration);
typedef  void (^RFAudioSuccessURLBlock) (BOOL flag, NSURL *url);

 作为参数

1
- ( void )playWithURL:(NSURL *)url finishedBlock:(RFAudioSuccessDetailBlock)block;

 使用

1
2
3
[[RFAudioManager defaultManager] playWithURL:url finishedBlock:^(BOOL flag, NSURL *url) {
     NSLog( @"播放结束:%@" , url);
}];

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值