質問

私はそうのような財産を設定しようとしています -

- インタフェース:

@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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top