美文网首页程序开发
iOS开发丨使用闭包Block来进行初始化

iOS开发丨使用闭包Block来进行初始化

作者: 炼心术师 | 来源:发表于2020-01-15 11:47 被阅读0次

在iOS开发中,闭包也就是Block是一种常用的特殊类型,可以正常定义变量、作为参数、作为返回值,还可以声明赋值去保存一段代码,在需要调用的地方去调用,目前Block已经广泛应用于各类回调传值、排序遍历、GCD、动画等。

下面,介绍一种比较冷门的使用闭包来进行初始化的例子,好处是在需要生成多个相同实例的时候会比较方便,代码上看着也比较整齐和清晰。

传统写法:

UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightRegular];
titleLabel.textColor = [UIColor blackColor];
titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.frame = CGRectMake(15, 15, 200, 30);
titleLabel.text = @"我是标题";
[self.view addSubview:titleLabel];

UILabel *textLabel = [[UILabel alloc] init];
textLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightRegular];
textLabel.textColor = [UIColor blackColor];
textLabel.textAlignment = NSTextAlignmentCenter;
textLabel.frame = CGRectMake(15, 60, 200, 30);
textLabel.text = @"我是文本";
[self.view addSubview:textLabel];

闭包写法:

UILabel *titleLabel = ^{
    UILabel *label = [[UILabel alloc] init];
    label.font = [UIFont systemFontOfSize:17 weight:UIFontWeightRegular];
    label.textColor = [UIColor blackColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.frame = CGRectMake(15, 15, 200, 30);
    label.text = @"我是标题";
    return label;
}();
[self.view addSubview:titleLabel];

UILabel *textLabel = ^{
    UILabel *label = [[UILabel alloc] init];
    label.font = [UIFont systemFontOfSize:15 weight:UIFontWeightRegular];
    label.textColor = [UIColor blackColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.frame = CGRectMake(15, 60, 200, 30);
    label.text = @"我是文本";
    return label;
}();
[self.view addSubview:textLabel];

或者:

UILabel *(^newLabel)(NSString*, CGFloat) = ^(NSString *text, CGFloat fontSize) {
    UILabel *label = [[UILabel alloc] init];
    label.font = [UIFont systemFontOfSize:fontSize weight:UIFontWeightRegular];
    label.textColor = [UIColor blackColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.text = text;
    return label;
};

UILabel *titleLabel = newLabel(@"我是标题", 17);
titleLabel.frame = CGRectMake(15, 15, 200, 30);
[self.view addSubview:titleLabel];

UILabel *textLabel = newLabel(@"我是文本", 15);
textLabel.frame = CGRectMake(15, 60, 200, 30);
[self.view addSubview:textLabel];

相关文章

  • iOS开发丨使用闭包Block来进行初始化

    在iOS开发中,闭包也就是Block是一种常用的特殊类型,可以正常定义变量、作为参数、作为返回值,还可以声明赋值去...

  • Objective-C 之 block

    前言 作为iOS开发,我们平日里会高频使用block,block非常重要,在学习Swift闭包时,我突然觉得可以将...

  • JavaScript学习之路-闭包

    一、闭包? 闭包一词想必iOS开发的童鞋指定很熟悉,Objective-C上的闭包叫Block,Swift上就叫闭...

  • iOS Block 原理解析

    一 : block要点分析 [ block是个闭包 ] block他的本质就是闭包功能在iOS上的实现。而闭包功能...

  • Swift笔记<二十>闭包

    1.闭包的介绍 闭包和OC中的block非常相似 2.闭包的使用 block的定义属性和方法中带block 闭包=...

  • 04·iOS 面试题·Block 的原理,Block 的属性修饰

    前言 Block 在平时开发中经常使用,它是 Objective-C 对 闭包 是实现,定义如下: Block 是...

  • Swift 闭包

    闭包 闭包是保存一段代码块,可以在代码中传递和是使用(类似Block) 闭包和block类似 闭包的表达式如下闭包...

  • 深入浅出block闭包

    一句话总结block : 带有局部变量的匿名函数 闭包在其它编程语言的名称 iOS闭包的声明与定义 博主iOS开发...

  • Swift闭包循环引用

    闭包循环引用 block 闭包和block很像,都是提前准备好代码 block会对外部变量进行强引用,保证执行代码...

  • 在Objective-C中声明Block

    block就是OC对闭包函数的实现。block使用很方便,在日常开发中,合理使用能代码结构更加清晰。简单记录下bl...

网友评论

    本文标题:iOS开发丨使用闭包Block来进行初始化

    本文链接:https://www.haomeiwen.com/subject/swqtzctx.html