【问题标题】:Crash when setting attributes dictionary of UIBarButtonItem设置 UIBarButtonItem 的属性字典时崩溃
【发布时间】:2015-06-19 15:42:10
【问题描述】:

我有以下代码:

UIFont * applicationBolFontOfSize26=[fontsSuperclass returnApplicationMainFontOfSize:26.0f];
[self.settingsButton setTitleTextAttributes:@{ NSFontAttributeName : applicationBolFontOfSize26 } forState:UIControlStateNormal];

其中字体超类方法定义为:

+(UIFont *)returnApplicationMainFontOfSize:(CGFloat)floatSize {
    return [UIFont fontWithName:@"HelveticaNeue-Regular" size:floatSize];
}

self.settingButton setTitleText... 崩溃并出现错误:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 尝试从 objects[0] 插入 nil 对象”

为什么?

【问题讨论】:

  • 好吧,有些东西是零...在将字体分配给按钮之前记录或断点。
  • 是的,字体是 nil,这很奇怪。
  • 没有复合语句也更容易调试,在中间变量中创建属性。然后检查每个项目是否为零。调试技能是编写软件的一部分。
  • 我不应该分配初始化超类。
  • fontsSuperclass 必须在某处创建,显示出来。

标签: objective-c nsdictionary


【解决方案1】:

没有名为“HelveticaNeue-Regular”的字体,所以你的字体是nil。将[UIFont fontWithName:@"HelveticaNeue" size:floatSize] 用于常规的 Helvetica Neue 字体。

【讨论】:

  • 啊,谢谢,我如何指定粗体与常规?
  • “HelveticaNeue-Bold”是粗体。您可以通过记录[UIFont fontNamesForFamilyName:@"Helvetica Neue"]的值来查看所有这些@
猜你喜欢
  • 2012-02-08
  • 1970-01-01
  • 2011-04-01
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
相关资源
最近更新 更多