4

私は次のアサーションの失敗を得ました:

-[UITextFieldLabel setTextColor:]、/SourceCache/UIKit_Sim/UIKit-1448.89/UILabel.m:314 でのアサーションの失敗

この行で

[self.window makeKeyAndVisible];

appDidFinishLaunching メソッドで。

    Unhandled exception: Debug info are

    Invalid parameter not satisfying: color
    (
"4   libc++abi.dylib                     0x991331fe _Z19safe_handler_callerPFvvE + 15",
"5   libc++abi.dylib                     0x99133268 __cxa_bad_typeid + 0",
"6   libc++abi.dylib                     0x991342a0 _Z23__gxx_exception_cleanup19_Unwind_Reason_CodeP17_Unwind_Exception + 0",
"7   libobjc.A.dylib                     0x0167e416 __objc_personality_v0 + 0",
"8   CoreFoundation                      0x0182cef8 +[NSException raise:format:arguments:] + 136"
  )

どんな助けでも大歓迎です:)

前もって感謝します。

4

1 に答える 1

4

私は同じ問題を抱えていましたが、最終的に問題の原因を見つけました。

[UILabel setTextColor:] のように見えます (のみ!) iOS 4.x で nil color がパラメーターとして渡されるとクラッシュします。私のアプリは iOS 5 と 6 で正常に動作します。

UITextField を含む IB で作成されたナビゲーション バーを使用しています (これは通常、BarButtonItem のサブビューです)。この TextField の TextColor 属性はデフォルト値のままでした。通常のビューに配置された TextField の場合、これは正常に機能しますが、navigationBar の TextField では機能しません。TextColor を他のもの (Dark Text Color など) に変更すると、正常に動作し、それ以上クラッシュすることはありません。

この問題は、アプリの起動時と、すべての NIB ファイルが読み込まれるまでに発生するため、追跡が困難でした。そのため、コードのデバッグや例外ブレークポイントが機能しませんでした。クラッシュログでさえ、NIBファイルのロード中に発生したことを通知するだけで、どのファイルを通知するかは通知しないため、役に立ちませんでした. 私の場合、起動時に読み込まれるビューがかなりあります。UILabel クラスのクラス カテゴリを作成し、-(void )setTextColor:(UIColor *)colorこのカテゴリにメソッドを追加することで、ようやく問題を突き止めることができました。この方法では、ブレークポイントを設定することができ、パラメーターが 1 つのケースでのみ nil であることがわかりました。さらに、-(void )setText:(NSString *)text以前は色が nil に設定されていなかったこの特定の UILabel にどのテキストが設定されているかを追加して監視しました。テキスト パラメータは、最終的にナビゲーション バーの UITextField を示しました。

これは、このクラッシュが UINavigationBar の UITextField に関連していない他の場合に役立つ可能性があります。

于 2012-12-13T12:32:42.710 に答える