web-dev-qa-db-ja.com

認識されないセレクターUIDeviceRGBColorcountByEnumeratingWithState:objects:count:

これは一種のだましだとは思いますが、元の投稿にコメントするのに十分な評判はまだありません。答えはありませんが、もっと役立つ情報があります(具体例)。モデレーター、これを適切な場所に自由に移動してください。

最新のXCode8ベータ6(iOS 10 SDK)を使用してコードをコンパイルすると、例外「キャッチされない例外 'NSInvalidArgumentException'によるアプリの終了、理由: '-[UIDeviceRGBColor countByEnumeratingWithState:objects:count:]:認識されないセレクターがに送信されましたインスタンス0x600000071340 '"

これは通話中に発生します。

    auto viewController = [[[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];

プロジェクトを最小限に抑えてコンパイルしても問題が発生するようにすることで、問題を切り分けました。ここからダウンロードできます:

プロジェクト例

たくさんのコードを取り出したので、ほとんどすべてのクラスがなくなっていることに注意してください。その結果、xibから参照されている存在しないクラスに対して多くの警告(エラーではない)が発生します。しかし、それは問題ではありません。コードはiOS 9 SDKでコンパイルされ、正常に実行されます。ただし、iOS 10 sdkでコンパイルした後、シミュレーターとiOS9を実行しているデバイスの両方でクラッシュします。

この問題を回避するには、ファイル「HackForUnrecognizedSelectorInIOS10.m」で「#if0」を「#if1」に変更します。これにより、UIColorの欠落しているセレクターを定義するカテゴリーが追加されます。しかし、明らかにそれを出荷コードに追加することはできません。これは、開発を継続するための一時的な一時的な手段にすぎません。

バグレポート(28153870)を提出しました。しかし、醜いハッキングなしでこの問題を回避する方法について誰かがこれ以上の情報を持っているなら、どんな情報でも歓迎します。

ありがとう

ミシェル・コルマン

14
Michel Colman

同じ構成(XCode 8ベータ6、iOS 10 SDK)でプロジェクトをコンパイルして実行しようとすると、エラーメッセージが次のとおりである点を除いて、同様の問題が発生しました。

***キャッチされなかった例外 'NSInvalidArgumentException'が原因でアプリを終了しています、理由: '-[UIDeviceRGBColor length]:認識されないセレクターがインスタンス0x600000479280に送信されました'

そして、この問題は、ビューがインターフェイスファイル(XibとNib)を使用して初期化されている場合にのみ発生することに気付きました。私はこの問題を次の方法で解決しました:

  1. インターフェイスファイルを開き、右側のパネルで[ファイルインスペクター]タブに移動します。

  2. 強調表示されている属性を「iOS7.0以降」(またはそれ以降のiOSバージョン)に変更します enter image description here

次に、プロジェクトをコンパイルして再度実行します。これで問題が解決するはずですが、その背後にある理由はわかりません。私はあなたのサンプルプロジェクトで同じことを試みました、そしてそれは問題も解決します。

41
alanlo

私の場合、製品の一般設定でプロジェクトの展開ターゲットを8.0に変更する必要がありました。受け入れられた答えからのヒントに感謝します!

4
XIII