Что такое «^» в Objective-C - PullRequest
7 голосов
/ 29 апреля 2010

Что означает «^» в приведенном ниже коде?

@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 ]

9 голосов
/ 29 апреля 2010

Читайте об этом здесь . Это «блочный объект», который в основном является лямбда-формой и был введен для поддержки GCD Snow Leopard (Grand Central Dispatch).

7 голосов
/ 05 мая 2010

Небольшое отступление: символ '^' (знак вставки или округлый знак) имеет другое значение при использовании в качестве бинарного оператора:

a ^ b

означает XOR b. XOR (иначе исключающее ИЛИ) - это двоичная арифметическая операция, в которой результат имеет 1 в любой битовой позиции, где a или b имеют 1, но не оба.

3 голосов
/ 29 апреля 2010

Это блок (закрытие a.k.a), расширение C, созданное Apple.

2 голосов
/ 29 апреля 2010

Это блок , вероятно, для использования с Grand Central Dispatch .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...