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