我在许多iOS标题中都看到过(^)被使用了,而且我从来没有遇到过使用该标志的原因。有人可能想开导这个吗?
感谢。
答案 0 :(得分:10)
那些经常表示“块”。请参阅Blocks Programming Topics。
或者,如果您观看WWDC 2012 session 712的开头,他们还会带您一览历史背景。
答案 1 :(得分:4)
它表示一个块。块是一种语法,允许您创建回调函数,并将其作为参数传递给方法。在其他语言中,这类似于闭包,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!
答案 2 :(得分:2)
^字符用于块,特别是块参数。
答案 3 :(得分:1)
如果你问为什么字符'^'在块中使用,那是因为剩下的字符相对较少:
实际上它缩小到只有两三个,而那些'^'被选中了,因为,好吧,因为。
如果您想详细讨论讨论,可能会在llvm.org邮件列表等上有此记录。
你还可以看看关于lambdas的C ++ 11委员会会议的会议记录,这些会议基本上都是一样的。