2010-04-29 19 views
6

Co oznacza "^" w poniższym kodzie?

@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 

=== Mam szukał i szukał - czy to jakaś szczególnym odniesieniem do pamięci?Co to jest "^" w Objective-C

Odpowiedz

9

Czytaj na nim here. Jest to "obiekt blokowy", który jest w zasadzie formą lambda i został wprowadzony do obsługi GCD systemu Snow Leopard (Grand Central Dispatch).

3

Jest to block (zamknięcie a.k.a.), rozszerzenie C utworzone przez firmę Apple.

6

mały bok: Znak '^' (daszka lub charakter okalającej) ma inne znaczenie, stosowany jako operatora Binary

a^b 

oznacza XOR b. XOR (vel exclusive) to binarna operacja arytmetyczna, w której wynik ma wartość 1 w dowolnym położeniu bitowym, gdzie a lub b ma wartość 1, ale nie obie.