4

を使って問題を解決しCGColorGetComponentsましたが、その理由を正確に理解したいと思います。

私は次のインスタンスで次のことを行っていましたUIColor *firstColour

[firstColour getRed:&r green:&g blue:&b alpha:nil];

これは、シミュレーターでは完全に正常に機能していました。次に、デバイスでテストしたところ、次のエラーが発生しました。

UIDeviceRGBColor getRed:green:blue:alpha認識されないセレクターがインスタンスに送信されました

インターネットで調べたところ、UIColor実際にはのようなサブクラスに置き換えられていることがわかりましたUIDeviceRGBColor。結構ですが、サブクラスは同じように機能UIColorし、(少なくとも)同じメソッドを受け入れるべきではありませんか?

ゾンビを有効にしましたが、ほとんどの人がフォーラムで言うように、これはメモリ管理の問題ではなかったようです。また、ドキュメントが見つからないため、UIDeviceRGBColorどのように動作するのかわかりません。誰かがなぜそれが起こったのか、そして何よりも、これが別の方法で再び起こる可能性があるかどうかを知っていますか?

ありがとうございました。

4

1 に答える 1

7

getRed:green:blue:alpha:UIColorのメソッドは、iOS5.0以降で使用できます。おそらく問題は、その方法が利用できない古いバージョンのOSがデバイスにあることです。

古いOSでは、 /関数CGColorRefを使用して、基になる構造からカラーコンポーネントを取得する必要があります。CGColorGetComponentsCGColorGetNumberOfComponents

于 2012-05-22T09:37:07.267 に答える