プロパティからcgcolor値を取得しようとするとクラッシュ
-
17-09-2020 - |
質問
私はそうのような財産を設定しようとしています -
- インタフェース:
@property (readwrite, assign) CGColorRef otherBallColor;
.
ソメテット:
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];
.
クラッシュする値にアクセスしようとするとすぐに -
ソメオ温度(この場合の引き出し):
CGContextSetFillColorWithColor(context, otherBallColor);
.
しかし「somemethod」の場合、私は -
CGColorRef ballColor = [UIColor blueColor].CGColor;
.
...それはすべてうまく機能します。誰かが何が起こっているのか説明できますか?
感謝(PS、目的のC、全般的にプログラミングしていない)
解決
返品されたcgcolorを保持する必要があります。
この場合可能な場合はCGColorrefの代わりにuicolorを使用することをお勧めします。
他のヒント
遅れた答えについて話すが、私はこの特定の問題に対する代替的な解決策を持っています、そして私は少し前に走った。私は解決策の前にこの質問を見つけました、それで私は私の2つのセントを投げるだろうと考えました。UIColor
にはsetFill
というインスタンスメソッドがあり、これは受信機を現在のコンテキスト塗りに色として設定します。だからあなたは書くことができます:
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);
.
私はこれが清潔な解決策を見つけました、あなたは保持またはそれに続いてCGColor
を解放することを心配する必要がないので、これはきれいな解決策を見つけました。実際には、CGContextSetFillColorWithColor
のように、コアグラフィックスの塗りつぶしカラー設定コマンドを処理する必要はありません。
- (void)setFill
メソッドをチェックアウトすることができます。 UICOLOR Apple Documentation 。
所属していません StackOverflow