【问题标题】:iPhone SDK: Assertion failure in -[UILabel setFont:]iPhone SDK:-[UILabel setFont:] 中的断言失败
【发布时间】:2008-10-15 03:04:44
【问题描述】:

我有一个 iPhone 应用程序可以在我笔记本电脑的模拟器中编译和运行良好。现在,我尝试在 iMac 上的模拟器中构建和运行相同的代码,它会启动并让我单击一个按钮,但随后出现断言失败。

这是控制台中的内容:

*** Assertion failure in -[UILabel setFont:], /SourceCache/UIKit/UIKit-738/UILabel.m:438
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: font != nil'
Stack: (
2493366603,
2432871995,
2493366059,
2459146836,
817183141,
817926218,
837317240,
837317032,
837315376,
837314643,
2492860866,
2492867620,
2492869880,
85304,
85501,
816175835,
816221412,
9096,
8930
)

这是堆栈跟踪:

#0  0x949dbff4 in ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___
#1  0x9102ae3b in objc_exception_throw
#2  0x94962ad3 in CFRunLoopRunSpecific
#3  0x94962cf8 in CFRunLoopRunInMode
#4  0x00014d38 in GSEventRunModal
#5  0x00014dfd in GSEventRun
#6  0x30a5dadb in -[UIApplication _run]
#7  0x30a68ce4 in UIApplicationMain
#8  0x00002388 in main at main.m:16

我的代码没有直接调用 setFont:。但是,这将是程序执行中某些按钮第一次可见的点。

我已经用谷歌搜索过了。一些有类似问题的人说,当他们编辑 NIB、更改他们的时区或其他奇怪的东西时,这个问题得到了神奇的解决。

你知道真正的原因是什么吗?

(请不要抱怨保密协议。)


更新:如果我将某些按钮的字体从“TimesNewRomanPS-BoldMT”更改为“Times”,则不再发生断言失败。但是为什么我不能使用所需的字体,它存在于 iPhone 上,安装在新机器上,并且可以在 Interface Builder 中选择?

【问题讨论】:

  • 想知道同样的事情。这也刚开始发生在我身上……使用 Helvetica!
  • 而且它只发生在 UIButton 上,而不是 UILabel。

标签: iphone


【解决方案1】:

如果您的 xib 文件中有 UILabel,它们可能以某种方式损坏,或者您可能为它们设置了两台机器上都不存在的字体(您可以在编辑 UILabel 时使用 command-T调出字体选择器;不确定是否可以设置非 iPhone 字体,但可以)。否则,请尝试从您的 xib 文件中删除 UILabel,直到它运行为止,这就是您的罪魁祸首。

【讨论】:

  • 如果我将某些按钮的字体从“TimesNewRomanPS-BoldMT”更改为“Times”,则不再发生断言失败。但这是为什么呢?为什么我不能使用新机器上安装的,在Interface Builder中可以选择的原始字体?
【解决方案2】:

如果不是 UILabel,它可能是 UIButton(包含 UILable)等。

【讨论】:

    【解决方案3】:

    有同样的问题,但在特殊情况下。仅当代码为 iOS 4 编译但部署在 3.1.3 的设备上删除 Arial-Narrow 并且它工作时。

    【讨论】:

      【解决方案4】:

      不是所有的都可以在 iphone 中使用,只有某些字体。

      【讨论】:

        【解决方案5】:

        我们遇到了这个问题,因为我们使用了名称为 Helvatica Bold(带有空格)的 [UIFont fontWithName:fontSize:],而不是 Helvetica-Bold(带有破折号)。 Helvatica Bold 显然适用于当前的操作系统版本,但不适用于 iOS 3.1。 Helvetica-Bold 似乎是正确的版本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-22
          • 2011-05-27
          • 2017-08-07
          • 2012-08-01
          • 2015-09-01
          相关资源
          最近更新 更多