iOS实现简单的block

OC中的block主要用来保存一段代码,在需要的时候执行。
下面是一个小的例子:

#import "ViewController.h"

@interface ViewController ()

/** myblock(定义一个block) */
@property(nonatomic,copy) void(^myblock)();
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
//    如果忘记block怎么写,可以使用“inlineblock”。oc会自动提示
//    <#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parameters#>) {
//        <#statements#>
//    };
    
    __weak  UIViewController *self1 = self;
//    __block UIViewController *self1 = self;
    /** block代码块 */
    self.myblock = ^{
        NSLog(@"我被执行了");
        self1.view.backgroundColor = [UIColor colorWithRed:arc4random()%10/10.0f green:arc4random()%10/10.0f blue:arc4random()%10/10.0f alpha:1];
    };
    
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s",__func__);
    //执行block
    self.myblock();
}

@end

ps:

  1. 如果忘记block怎么写,可以使用“inlineblock”。oc会自动提示哦!
  2. 属性要使用copy属性
  3. 防止循环引用,如果在block块代码中使用,要使用弱类型,用__weak和__block修饰

你可能感兴趣的:(iOS实现简单的block)