我正在使用NSDictionary来更改appDelegate文件中UIBarButtonItem的外观:
UIBarButtonItem *barButtonItemProxy = [UIBarButtonItem appearanceWhenContainedIn:
[UINavigationBar class], [UINavigationController class], nil];
NSDictionary *textAttributes = @{UITextAttributeFont :
[UIFont fontWithName:@"ChocoBold" size:13.0f],
UITextAttributeTextColor : [UIColor whiteColor],
UITextAttributeTextShadowColor : [UIColor blackColor],
UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)]
};
[barButtonItemProxy setTitleTextAttributes:textAttributes forState:UIControlStateNormal];
该应用程序在模拟器中运行良好,但当我在设备上运行时,应用程序崩溃时出现以下异常:
[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
崩溃发生在NSDictionary *textAttributes
行。
我不明白那个字典中的哪个参数是nil?
答案 0 :(得分:3)
NSLog(@"font family %@",[UIFont fontNamesForFamilyName:@"Choco"]);
如果您的应用中存在choco字体系列,则会记录所有可用的字体名称。然后复制确切的字体名称。 可能是您使用的字体名称错误,例如它的Choco-Bold而不是chocobold等。
NSMutableDictionary *textAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor],UITextAttributeTextColor,
[UIColor blackColor],UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)],UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Helvetica" size:13.0f],UITextAttributeFont,nil];
尝试使用“Helvetica”字体,如果它有效,则问题出在您的字体上。