Frage

Ich versuche, eine Eigenschaft wie folgt festzulegen:

-Schnittstelle:

@property (readwrite, assign) CGColorRef otherBallColor;

-someMethode:

CGColorRef ballColor = [UIColor colorWithRed:255.0/256.0 green:165.0/256.0 blue:239.0/256.0 alpha:1.0].CGColor;  
[self setOtherBallColor:ballColor];

Sobald ich versuche, auf den Wert zuzugreifen, stürzt es ab –

-someOtherMethod (in diesem Fall drawRect):

CGContextSetFillColorWithColor(context, otherBallColor);

Aber wenn ich in der „someMethod“ das tue –

CGColorRef ballColor = [UIColor blueColor].CGColor;

...es funktioniert alles gut.Kann jemand erklären, was los ist?

Vielen Dank (PS, ziemlich neu in Objective-C, allerdings nicht im Programmieren im Allgemeinen)

War es hilfreich?

Lösung

Sie müssen zurückgegeben haben

Ich würde Ihnen empfehlen, Uicolor anstelle von CGColorref zu verwenden, wenn ich in diesem Fall möglich ist.

Andere Tipps

Sprechen Sie über eine späte Antwort, aber ich habe eine alternative Lösung für dieses spezielle Problem, auf das ich vor einiger Zeit gestoßen bin.Ich fand diese Frage vor der Lösung, also dachte ich, ich würde meinen Beitrag dazu leisten.Es stellt sich heraus, dass UIColor hat eine Instanzmethode namens setFill, wodurch der Empfänger als aktuelle Kontextfüllfarbe festgelegt wird.Man könnte also schreiben:

CGContextRef myContext = UIGraphicsGetCurrentContext();
[[UIColor colorWithRed:255.0/255.0 green:165.0/255.0 
                  blue:239.0/255.0 alpha:1.0] setFill];
CGContextFillPath(myContext);

Meiner Meinung nach ist dies eine sauberere Lösung, da Sie sich keine Sorgen darüber machen müssen, welche Daten Sie behalten oder später wieder freigeben CGColorS.Tatsächlich müssen Sie sich nicht einmal mit Befehlen zur Einstellung der Füllfarbe von Core Graphics befassen CGContextSetFillColorWithColor.

Sie können sich das ansehen - (void)setFill Methode ausführlicher in der UIColor Apple-Dokumentation.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top