【发布时间】:2013-04-19 14:47:47
【问题描述】:
我正在将我的 xcode 项目转换为现代目标 c。在我的 AppDelegate 中,以前,我有这个代码:
- (void)customizeAppearance
{
[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:barButtonFont, UITextAttributeFont, nil] forState:UIControlStateNormal];
}
以下是使用@{keys : value} 创建NSDictionary 的字面方法,我将其更改为:
[[UIBarButtonItem appearance] setTitleTextAttributes:@{UITextAttributeFont: barButtonFont} forState:UIControlStateNormal];
这一更改使我的系统崩溃。错误输出为:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 尝试插入 nil 对象 对象[0]'
有谁知道为什么以及我可以做些什么来解决它?
我可以忽略它,但稍后它会咬我,因为我会忘记。我确实想将我的整个项目更改为现代目标 c,并且将来不必记住为什么一个代码不是“现代”的。
谢谢。
【问题讨论】:
-
我猜你的
barButtonFont是nil。 -
UIFont *barButtonFont = [UIFont fontWithName:@"Helvetica CE" size:12.0];
-
您的代码确实返回
nil。使用此代码[UIFont systemFontOfSize:12.0]获取 Helvetica 字体。 -
默认是 Helvetica 吗?
标签: objective-c literals