断言失败 - [UITextFieldLabel setTextColor:]

时间:2012-10-18 13:00:15

标签: uitextfield textfield categories

我得到了以下断言失败:

断言失败 - [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"
  )

任何帮助将不胜感激:)

提前致谢。

1 个答案:

答案 0 :(得分:4)

我有同样的问题,我终于找到了问题的原因。

当nil颜色作为参数传递时,看起来[UILabel setTextColor:]在(仅!)iOS 4.x上崩溃。我的应用在iOS 5和6上运行正常。

我正在使用一个使用IB创建的navigationBar,其中包含一个UITextField(通常是BarButtonItem的子视图)。此TextField的TextColor属性保留为默认值。对于放置在普通视图上的TextFields,这可以正常工作,但不适用于navigationBar中的TextField。一旦我将TextColor更改为其他任何内容(例如,深色文本颜色),工作正常并且不会导致任何进一步的崩溃。

很难跟踪此问题,因为它发生在App启动时以及加载所有NIB文件时,因此调试代码或异常断点不起作用。甚至崩溃日志都没有帮助,因为它只是告诉你它在加载NIB文件时发生但不告诉你哪一个。就我而言,启动时会加载很多视图。我终于通过创建UILabel类的类类别来跟踪问题,并且只为此类别添加了-(void )setTextColor:(UIColor *)color方法。在这个方法中,我然后能够设置一个断点,发现只有一种情况下参数是nil。此外,我随后添加了-(void )setText:(NSString *)text并观察了为此特定UILabel设置的文本,其中颜色先前未设置为nil。 text参数最终将我指向了navigationBar中的UITextField。

在其他情况下,这可能会有所帮助,因为此崩溃与UINavigationBar中的UITextField无关。