您的位置:首页 > 其它

block

2016-04-27 13:55 309 查看
当我们在下级定义代码块block以及设置代码块属性的时候,

#import <Foundation/Foundation.h>

//定义一个block

typedef void (^ColorBlock)(UIColor *);

/**

 * block的使用方法

 */

@interface MyBlock :
NSObject{

    //把block当成一个属性

    ColorBlock _changeColorBlock;

}

@property (nonatomic,copy)ColorBlock _changeColorBlock;

/**

 * 根据传进来的block
把参数带过去 也可以定义一个属性block 
把传过来的block赋值给属性block在完成处理后把block的参数传回去

 */
在下级实现文件里实现该方法

/**

 * 根据传过来的block
把参数带过去

 */

-(void)changeColorWithBlock:(ColorBlock )color{

    //让属性的block为这个参数

    //_changeColorBlock=color;

    //copy
一个 计数器加1 
以免被释放

    _changeColorBlock=Block_copy(color);

    UIColor *mColor=[UIColor
redColor];

    

    

    //color(mColor);

    _changeColorBlock(mColor);

    [NSTimer
scheduledTimerWithTimeInterval:3
target:self
selector:@selector(testtt)
userInfo:nil
repeats:NO];

    //暂停5秒

//    [NSThread sleepForTimeInterval:5.0];

//    [self testtt];

}

-(void)testtt{

    _changeColorBlock([UIColor
blackColor]);

}

我们在上级调用这个block,当下级代码执行到代码块的时候会触发我们上级用到的代码块,下级代码块的参数我们在上级代码块里可以获取,就是上级代码块的参数。

//调用block类里的方法
传个block过去 
把参数带过来

            [block changeColorWithBlock:^(UIColor *color){

                //设置viewcontroller的背景色 
用block带回来的参数

                self.view.backgroundColor=color;

            }];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: