我在许多 iOS 标头中看到使用了 (^),但我从未遇到过为什么使用该标志的原因。有人可能想对此有所启发吗?
谢谢。
这些通常表示“块”。请参阅块编程主题。
或者,如果您观看WWDC 2012 会议 712的开始,他们还会带您浏览具有历史背景的街区。
它表示一个块。块是一种语法,允许您创建回调函数,并将其作为参数传递给方法。在其他语言中,这类似于闭包、lambda 或匿名类。
例如,列出的参数:
void(^)(NSString *myStr)
期望您传入一个返回 void 的块/函数,并接受一个 NSString 指针。
您可以使用以下语法根据方法中声明的预期参数创建一个块:
^(<Parameters>) { <Body> }
例如,需要块参数的方法可能如下所示:
-(void)doSomething:(void(^)(NSString *myStr))theBlock;
...并且可以这样调用:
[self doSomething:^(NSString *myStr) { NSLog(@"The String is: %@", myStr); }];
您的块将doSomething:
像函数一样被回调,使用参数名称:
-(void)doSomething:(void(^)(NSString *myStr))theBlock {
theBlock(@"Hello!");
}
...这将显示:
The String is: Hello!
^ 字符用于块,特别是块参数。
如果您要问为什么要在块中使用字符“^”,那是因为剩下的字符相对较少:
这实际上将其缩小到只有两个或三个,而选择那些“^”是因为,嗯,因为。
如果您想详细了解讨论,llvm.org 邮件列表等上可能对此有记录。
You could also look at the minutes from the C++11 committee meetings on lambdas, which went through basically the same process.