UITextAttributeFont在设备上导致NSInvalidArgumentException但在模拟器中不导致

时间:2012-11-24 19:31:48

标签: objective-c ios6 uinavigationbar

我正在iOS 6下自定义iOS应用的UINavigationBar。因此,我使用setTitleTextAttributes来执行此操作。

然而具体设置

NSDictionary *attribute = @{UITextAttributeFont : [UIFont fontWithName:@"Bernard MT Condensed" size:21.0]};

导致应用在设备上崩溃,但模拟器中的不是,但有以下异常:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 
attempt to insert nil object from objects[0]'

我发现这个question似乎是同一类型,但我的设备我的模拟器都设置为完全相同的区域设置(语言,地区格式)。

值得注意的一点是,两个环境中的区域设置都设置为美式英语,但我使用丹麦语特殊字符显示丹麦语区域格式的文本,但是 在模拟器,如上所述。

1 个答案:

答案 0 :(得分:3)

您使用的字体是自定义字体,需要将字体文件添加到应用程序的资源以及Info.plist中的条目。

文件名案例在真实设备上很重要,但在模拟器上却不重要。您需要确保Info.plist中的条目与实际字体文件的真实文件名(包括大小写)匹配。

那些认为使用模拟器的人注意就足够了 - 这是在真实设备上进行测试至关重要的众多原因之一。