2012-05-12 126 views
3

我有一些代码来设置一个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?

谢谢!

托德。

+0

如果你像这样初始化段落风格会发生什么:'NSMutableParagraphStyle *居中= [[NSParagraphStyle defaultParagraphStyle] mutableCopy];'? – Wienke

+0

另一个问题可能是您命名字体的方式。试着打破这个代码并测试你的字体是否为零。 – Wienke

+0

对于它的价值,我在一个工作项目中尝试了你的代码,到目前为止在OS X SDK 10.7上没有崩溃。按照Wienke的建议,我尝试记录字体,结果如下:'“Helvetica-Bold 12.00 pt。P [](0x7ff6734f3f40)fobj = 0x7ff6736d0190,spc = 3.33”' - 那里也没有问题。 – modocache

回答

1

这是您运行的代码,它是简化的吗?事实上,它看起来对我很好(我敢说)。当它每隔一段时间崩溃时,比这更表示其他情况,这在代码中是不可见的。

你提到这是-awakeFromNib: - 这种方法可能运行两次吗?我曾多次让我困惑,而且这种情况很容易发生,例如,您在MainMenu.xib中创建一个窗口控制器作为IB对象,然后让窗口控制器通过-[super initWithWindowNibName:]在其自己的-init:中加载一个NIB。这为每个涉及的NIB调用-awakeFromNib一次。在我的例子中,我已经创建了一些初始化问题的顺序,它显示了与您描述的类似的不确定行为。

我将代码移动到了-windowWillLoad-windowDidLoad方法,这是每个窗口,因此不存在此问题。

+0

非常感谢你,感谢你。这似乎是它!我真的很愚蠢地把一个NSObject实例错误地放在一个nib文件中。我已经跑了10次以上,现在看起来都很好!顺便说一句:重新安装Xcode似乎也解决了项目设置更新问题,所以也许你已经做了我所做的,也就是Xcode 4.2和4.3在同一台机器上。我的机器上的Spotlight似乎将两个版本混合在一起,所以有时我会运行4.2。 – Todd

+0

嘿,这真是太棒了! :)我会在这里检查Xcode版本。 – febeling

相关问题