IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> iOS开发学习48 OC的lambda block -> 正文阅读

[移动开发]iOS开发学习48 OC的lambda block

一、block 简介

Block是苹果在ObjectC为C、C++以及Objective-C添加的特性,使得这些语言可以用类lambda表达式的语法来创建闭包。
block不需要写protocol、函数等、注重结果的传输,写法比委托简便。
block的声明:

<返回值类型> + (^<block名字>) + (<参数类型1>, <参数类型2>...)

二、block使用

1. block的写法大概就是这样:

void (^blockTest)(void) = ^{
    NSLog(@"block");
};

blockTest();

2. 带参数的话可以这样写:

^ BOOL (int left, int right){
	return a > b;
}

3. 如果不写入参,可以写:

    (void)^{
        NSLog(@"block的使用");}
    ;

4. 当然返回也可以省略,不过编译器可能会有警告:

    ^{
        NSLog(@"最简捷的block的使用");}
    ;

5. 定义一个block的变量:

    void (^blockWithParm)(int parm) = ^(int count){
        NSLog(@"有参无返回值的定义和使用:%d", count);
    };
    blockWithParm(100);

6. block就可以作为另一个函数的参数

void a(){
    void (^block)(int parm) = ^(int count){
        NSLog(@"有参无返回值的定义和使用:%d", count);
    };
    // 把block 传到funcWithParm里作为参数
    funcWithParm(block);
}

void funcWithParm(void (^block)(int parm))
{
    block(10);
}

7. block 作为类的属性(使用typedef)

在头文件中定义

typedef void (^blockTest)(); 
@property (nonatomic,copy) blockTest myblock;  

在m文件中调用:

if(_myblock){
_myblock();
}

其它类使用该属性

_testClass.myblock = ^{
 NSLog(@"block");
}

三、OC自带的使用block的API示例

遍历元素

    NSArray *arrChar=[@"A/B/C/D/E/F" componentsSeparatedByString:@"/"];
    //遍历元素
    [arrChar enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"\nindex:[%d], value:[%@]",idx,obj);
        if(idx == 4)
        {
            *stop=YES;
        }
    }];
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 11:03:19  更:2021-10-22 11:05:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:49:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码