2013-03-25 12 views
9

Sono un novizio nell'obiettivo C e sto cercando di capire cosa fa l'operatore ^? Durante l'esplorazione del codice sorgente ho visto prossima costruzione:Objective-C the^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(); 

}); 

E mi piacerebbe sapere qual è il ^?

+0

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

+3

@DanielSchneller direi che è perché, in questo caso, è molto difficile cercare la documentazione sui blocchi se non si sa come vengono chiamati. Puoi leggere la guida Objective-C ma non è il modo migliore per imparare. –

+0

@RogerNolan Sono completamente d'accordo con te, grazie. – HackU

risposta

16

Il ^ ha indicato l'inizio di una definizione di blocco all'interno di Objective-C.

Date un'occhiata qui: http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html#//apple_ref/doc/uid/TP40007502-CH7-SW1

Si noti che, in questo contesto, il ^ non è un operatore, è parte della sintassi di Objective-C @ risposta down-votato di Mike è rigorosamente la definizione corretta di l'operatore "^"

+0

Grazie per la rapida risposta. Mi ha aiutato molto! – HackU

+0

@HackU dovresti contrassegnare la risposta corretta allora. –

+0

Grazie, @RogerNolan per aver apportato questa importante modifica. –

2

Si usa per creare blocchi nell'oggetto c i blocchi sono come i puntatori di funzione in c. Questo può aiutare a

checkout this link

+0

Grazie per i collegamenti aggiuntivi! – HackU

+0

Prego – Rafeek

4

Qui è un segnale per l'inizio di un blocco.

Potete trovare ulteriori informazioni di blocco leggendo alcuni blog o articoli del tutorial:

Blocks – An Interesting Objective-C Addition In iOS 4

How To Use Blocks in iOS 5 Tutorial

Quando si conosce la cosa fondamentale di blocco, è possibile fare riferimento a Apple's document about block.

In effetti, l'utilizzo più regolare del blocco sarà GCD (sta per Grand Central Dispatch, che è il tuo caso in questione), UIView's animation e qualcosa di simile a un callback. È molto utile e comune nella moderna programmazione Obj-C.

+0

Grazie per i collegamenti aggiuntivi! – HackU

6

Si chiama Block In Objective C

Sintassi:

returnType (^variableName)(parameters); 

preso dalla un tutorial by Akiel Khan, (si può trovare un altro buon tutorial here):

  • Il letterale del blocco è "anonimo" (cioè senza nome)
  • Il simbolo del segno di omissione (^)
  • Non è stato necessario specificare il tipo di ritorno: il compilatore può "inferirlo". Potremmo averlo menzionato esplicitamente se lo volessimo.

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

Problemi correlati