2013-03-25 7 views
9

Ich bin ein Neuling in Objective C und versuchen, herauszufinden, was das tut Operator ^? Beim Erkunden einiger Quellcodes sah ich die nächste Konstruktion:Objective-C ist der Operator^

dispatch_once(&onceToken, ^{ 
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(20.f, 13.f), NO, 0.0f); 

    [[UIColor blackColor] setFill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 20, 1)] fill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 5, 20, 1)] fill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 10, 20, 1)] fill]; 

    [[UIColor whiteColor] setFill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 1, 20, 2)] fill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 6, 20, 2)] fill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 11, 20, 2)] fill]; 

    defaultImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

}); 

Und ich würde gerne wissen, was ist das ^?

+0

dies lesen: http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html –

+3

@DanielSchneller Ich würde sagen, es liegt daran, dass in diesem Fall ist es sehr schwierig für die Dokumentation auf Blöcke zu suchen, wenn Sie nicht wissen, was sie aufgerufen werden. Sie könnten den Objective-C-Leitfaden lesen, aber es ist nicht der beste Weg zu lernen. –

+0

@RogerNolan Ich stimme Ihnen vollkommen zu, danke. – HackU

Antwort

16

Die ^ angegeben den Start einer Blockdefinition innerhalb Objective-C.

Werfen Sie einen Blick hier in: http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html#//apple_ref/doc/uid/TP40007502-CH7-SW1

Beachten Sie, dass streng in diesem Zusammenhang ist die ^ kein Operator ist, ist es Teil der Syntax von Objective-C @ Mikes nach unten gestimmt Antwort ist die richtige Definition von der „^ Operator“

+0

Vielen Dank für die schnelle Antwort. Es hat mir sehr geholfen! – HackU

+0

@HackU sollten Sie dann die Antwort richtig markieren. –

+0

Danke, @RogerNolan, dass du diese wichtige Änderung vorgenommen hast. –

2

Es wird verwendet Blöcke in Objekt c Blöcke zu erstellen ist wie Funktionszeiger in c. Dies kann Ihnen helfen,

checkout this link

+0

Vielen Dank für zusätzliche Links! – HackU

+0

Sie sind herzlich willkommen – Rafeek

4

Hier ist ein Signal für einen Block beginnt.

können Sie mehr Informationen von Block finden, indem sie einige Tutorial Blogs oder Artikel zu lesen:

Blocks – An Interesting Objective-C Addition In iOS 4

How To Use Blocks in iOS 5 Tutorial

Wenn Sie die grundlegende Sache des Blocks kennen, können Sie auf Apple's document about block beziehen.

In der Tat wird die am meisten regelmäßige Verwendung von Block GCD (steht für Grand Central Dispatch, das ist Ihr Fall in Frage), UIView's animation und etwas anderes wie ein Rückruf. Es ist sehr nützlich und üblich in modernen Obj-C-Programmierung.

+0

Vielen Dank für zusätzliche Links! – HackU

6

Es heißt ein Block- In Objective C

Syntax:

returnType (^variableName)(parameters); 

Genommen wörtlich aus einem tutorial by Akiel Khan, (Sie ein weiteres gutes Tutorial finden here):

  • Der Block wörtliche ist „anonymous“ (dh ohne Namen)
  • Das Caret (^) Symbol
  • Wir müssen nicht den Rückgabetyp angeben - den Compiler kann „schließen“. Wir hätten es explizit erwähnen können, wenn wir es wollten.

This is a Official Documentation, read it for more information.