2011-01-17 20 views
1
[CATransaction withAnimationSpeed:1.0 :^ { 
      if(newMultiplier > 100) 
       fillLayer.backgroundColor = ColRGBA(1, 1, 0, 0.2); 
      else 
       fillLayer.backgroundColor = ColRGBA(0, 0, 0, 0); 
     }]; 

^{} gemein? warum benutze dieses Symbol.Was bedeutet dieser Code in objective-c?

Antwort

5

Das nennt man block. Sie ähneln anonymen Funktionen in anderen Sprachen, da Sie sie verwenden, um Code-Blöcke als Teil einer anderen Routine (in Ihrem Fall Animation) auszuführen. Blöcke sind nützlich, wenn Sie keine One-Use-Methoden in Ihrer Klasse erstellen möchten, nur damit Sie ihre Selektoren an Objective-C-Methoden wie performSelector: übergeben können.

^ ist das Symbol für einen Block. Der Code innerhalb der { } verhält sich genau wie der Code in einem { } Block einer Methode.

Einige Blöcke haben Parameter, ähnlich wie C-Funktionen angegeben:

^(int a, int b) { 
    NSLog(@"a + b = %d", a + b); 
} 

In Ihrem bestimmten Code ist ^ {} die gleiche wie ^(void) {}, das heißt der Block nimmt keine Parameter.

+0

danke für Ihre Antwort –