CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);
zurückgibt diese einen Schwimmer oder eine Reihe von Schwimmern? Es sieht so aus, als ob der Stern ein Kürzel für das Erstellen eines Arrays ist. Ist das korrekt?
Sortieren von.
CGFloat *colors
deklariert eine Variable, die einen Zeiger auf mindestens einen CGFloat hält. CGColorGetComponents
gibt einen Zeiger auf mehrere CGFloats nacheinander zurück - ein C-Array. Sie nehmen diesen Zeiger und weisen ihn der Variablen colors
zu (setzen Sie den Zeiger hinein).
Deklarieren der Variablen nicht erstellen das Array. In der Tat tut auch keiner CGColorGetComponents
. Was auch immer das CGColor-Objekt erstellt hat, erstellte das Array und speicherte es innerhalb des Objekts. CGColorGetComponents
können Sie den Zeiger auf diesen Speicher haben.
Wenn Sie die Variable CGFloat *colors
deklarieren, wird nur ein Platz (die Variable) erstellt, um einen Zeiger auf einen oder mehrere CGFloats zu speichern. Die Sache in der Variablen ist der Zeiger, und das Ding an diesem Zeiger ist das Array.
Wenn dies noch unklar ist, siehe Everything you need to know about pointers in C.
@htw Dank. Bedeutet das, dass es immer RGBA ist? Ich habe nirgends einen HSBA-Farbraum in den Apis gesehen. –
Nicht immer - das CGColor könnte beispielsweise im CMYK- oder weißen Farbraum erstellt worden sein. Laut der Apple-Dokumentation zur Farbprogrammierung (http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/DrawColor/index.html), wird der HSBA-Farbraum als RGBA-Farbraum bezeichnet. Also, in diesem Fall würde es RGBA-Komponenten zurückgeben, da die Farbe mit HSBA-Komponenten erstellt wurde. – hbw
@htw Danke! Ich habe die Dokumente durchgesehen. Das musste ich unbedingt finden. Sehr hilfreich! –