2008-10-15 64 views
1

我有一个iPhone应用程序编译和运行罚款在我的笔记本电脑上的模拟器。现在,我尝试在iMac上的Simulator中构建和运行相同的代码,然后启动它并让我单击按钮,但是我断言失败。iPhone SDK:断言失败 - [UILabel setFont:]

这里是什么是在控制台:

*** 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”向“泰晤士报”,然后断言失败不再发生。但为什么我不能使用iPhone上存在的所需字体安装在新机器上,并且可以在Interface Builder中选择?

+0

想知道同样的事情。这刚刚开始发生在我身上......与Helvetica! – lawrence 2009-05-21 08:54:29

+0

它只发生在UIButton,而不是UILabel。 – lawrence 2009-05-21 08:56:29

回答

1

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

1

如果它不是一个UILabel,它可能是一个UIButton(其中包含UILable)等

0

并不是所有的iPhone都可以,只有某些字体。

1

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

0

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