【发布时间】:2012-05-12 21:49:40
【问题描述】:
我有一些代码来设置 NSMutableAttributedString:
NSMutableParagraphStyle *centred = [[NSMutableParagraphStyle alloc]init];
[centred setAlignment:NSCenterTextAlignment];
NSDictionary *attributes = [[NSDictionary alloc]initWithObjectsAndKeys:[NSFont fontWithName:@"Helvetica bold" size:12],NSFontAttributeName,
[NSColor whiteColor],NSForegroundColorAttributeName,
[NSColor clearColor], NSBackgroundColorAttributeName,
centred, NSParagraphStyleAttributeName,
nil];
NSMutableAttributedString* attribTitle = [[NSMutableAttributedString alloc]initWithString:@"Foo"];
[attribTitle setAttributes:attributes range:NSMakeRange(0, [[attribTitle string] length] - 1)];
几乎自从我开始该项目以来,它一直存在于我的应用程序的 -awakeFromNib 方法中,没有任何问题,但就在今天,我开始尝试在 Xcode 4.3 中运行该应用程序的所有其他尝试,但由于“线程 1:EXC_BAD_ACCESS(代码=1,地址=0x10)”。它在最后的 '...setAttributes...' 行中断。有一次,我尝试使用 initWithString:attributes: 方法来初始化 attribTitle,果然崩溃(当它发生时)在 alloc-init 行。
我已经尝试清除 Xcode 重新启动,但它仍然会发生在所有其他构建中...如果应用程序没有崩溃,那么 attrbibuted 字符串会按预期显示。
我想知道我是否有一个损坏的项目文件,但以防万一我做了一些愚蠢的事情,谁能指出一个错误 - 大概是在“属性”NSDictionary 中?
谢谢!
托德。
【问题讨论】:
-
如果你这样初始化段落样式会发生什么:
NSMutableParagraphStyle *centred = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];? -
另一个问题可能是您命名字体的方式。尝试破解该代码并测试您的字体是否为零。
-
对于它的价值,我在一个工作项目中尝试了你的代码,到目前为止在 OS X SDK 10.7 上没有崩溃。根据 Wienke 的建议,我尝试按原样记录字体,结果如下:
"Helvetica-Bold 12.00 pt. P [] (0x7ff6734f3f40) fobj=0x7ff6736d0190, spc=3.33"-- 也没有问题。 -
谢谢你们! modocache,我得到和你一样的 o/p - 感谢您抽出宝贵的时间。 Wienke,我尝试了您的建议,并且 -defaultParagraphStyle 确实有所作为:现在我得到一个“[* count] 无法识别的选择器发送到实例...”,其中 '*' 可以是 NSURL 或 NSCFString。虽然我在 -awakeFromNib 中有一个 NSArray,但它并没有被“计数”……我正在使用这段代码来格式化 NSButton 标题。如果我完全删除它,该应用程序似乎会一次又一次地运行。我只是在错误的地方初始化了 var 吗?
-
好遗憾:我安装了两个版本的 Xcode,4.2 和 4.3。当我升级到 10.7 时它被留下了!!这将解释项目设置的事情。我运行多个帐户(我喜欢故意让自己的事情变得困难),我敢打赌我在 4.2 中打开了该项目几次。如果全新安装不起作用,我会重新发布。
标签: objective-c macos xcode4