我已经推断出了 Objective-C 中的很多事情,并且我已经阅读了几个简单地讨论数据类型的教程,但是我没有遇到任何简单地解释语法的东西。
首先,这意味着什么?它的作用是启动一个线程并获取从服务器返回的数据:
- (void)apiCall:(void (^)(NSMutableArray *list))block {
该函数头中的某些内容是否告诉我它是异步的?那是什么block
意思?
我已经推断出了 Objective-C 中的很多事情,并且我已经阅读了几个简单地讨论数据类型的教程,但是我没有遇到任何简单地解释语法的东西。
首先,这意味着什么?它的作用是启动一个线程并获取从服务器返回的数据:
- (void)apiCall:(void (^)(NSMutableArray *list))block {
该函数头中的某些内容是否告诉我它是异步的?那是什么block
意思?
让我们从第二个项目符号开始:类方法用 声明+
,实例方法用 声明-
。
第一个和第三个是相关的,名为block的参数是一个代码块,它是一段打算稍后运行的代码。鉴于此方法的名称apiCall
,我建议这是调用完成后运行的方法。
我们很自然地会怀疑这个方法会在另一个线程上做一些工作,然后调用你提供的块,但为此你需要检查文档或代码。
签名:(void (^)(NSMutableArray* list)) block
描述具有 void 返回类型和NSMutableArray* list
作为唯一参数的代码块。
块参数的一个示例用法是:
void (^apiCallCallback)(NSMutableArray*) = ^(NSMutableArray* list) {
NSLog(@"The API returned %d items in a list", [list length]);
}
[someApiInstance apiCall:apiCallCallback];
在 API 实例完成它应该做的任何事情后,您会看到打印了日志语句。