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<UITouch *> *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s",__func__);
    //执行block
    self.myblock();
}

@end

ps:

  1. 如果忘记block怎么写,可以使用“inlineblock”。oc会自动提示哦!
  2. 属性要使用copy属性
  3. 防止循环引用,如果在block块代码中使用,要使用弱类型,用__weak和__block修饰
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《Objective-C高级编程》这本书就讲了三个东西:自动引用计数、block、GCD,偏向于从原理上对这些内容...
    WeiHing阅读 9,883评论 10 69
  • iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,B...
    smile刺客阅读 2,366评论 2 26
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,203评论 30 471
  • 1,黑屏是啥?先看看黑屏的样子吧。 2,为啥黑屏?想想黑屏常常发生在啥时候?场景1:开机360提醒你软件更新,漏洞...
    龙少侠linux阅读 765评论 0 3
  • 你说你喜欢生如夏花,我说我偏爱那些花儿。 当我们的青春渐行渐远,当时间的齿轮乐此不疲地转动,我们却自以为还停...
    Timeless_Augs阅读 272评论 0 2