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

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

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

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

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

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

于 2012-12-13T12:32:42.710 回答