Objective-C中的'^'是什么

时间:2010-04-29 09:49:16

标签: objective-c

下面的代码中“^”是什么意思?

@implementation AppController

- (IBAction) loadComposition:(id)sender
{
    void (^handler)(NSInteger);

    NSOpenPanel *panel = [NSOpenPanel openPanel];

    [panel setAllowedFileTypes:[NSArray arrayWithObjects: @"qtz", nil]];

    handler = ^(NSInteger result) {
        if (result == NSFileHandlingPanelOKButton) {
            NSString *filePath = [[[panel URLs] objectAtIndex:0] path];
            if (![qcView loadCompositionFromFile:filePath]) {
                NSLog(@"Could not load composition");
            }
        }
    };

    [panel beginSheetModalForWindow:qcWindow completionHandler:handler];
}
@end

=== 我搜索过并搜索过 - 这是对记忆的某种特殊参考吗?

4 个答案:

答案 0 :(得分:9)

阅读here。它是一个“块对象”,基本上是一个lambda形式,并被引入以支持Snow Leopard的GCD(Grand Central Dispatch)。

答案 1 :(得分:6)

小旁:当用作二元运算符时,'^'字符(插入符号或抑扬符号)具有不同的含义:

a ^ b

表示异或b。 XOR(也称为异或)是一种二进制算术运算,其中结果在任何位位置都有1,其中a或b的值为1而不是两者。

答案 2 :(得分:3)

这是block(a.k.a。封闭),是Apple创建的C的扩展。

答案 3 :(得分:2)

这是block,可能与Grand Central Dispatch一起使用。