1

我在 NSTextView 子类中有一个调用,如下所示:

[[self textStorage] replaceCharactersInRange:fullRange withAttributedString:sa];

这个调用过去可以正常工作,现在(在安装 Snow Leopard 之后)在控制台中生成一条短消息:“糟糕”。它不会崩溃,它只是生成此消息,然后无法正确设置文本。“哎呀”消息来自 Apple 代码,而不是我的代码,这绝对令人愤怒。

谁能告诉我发生了什么事?为什么 NSTextView 的 textStorage 会生成此消息?

我不知道在生成 Oops 消息时,fullRange 等于 (0,0) 是否相关。

...之后...

好吧,我已经设法解决了这个问题。这听起来很疯狂。事实证明,我正在使用的 NSTextView 作为 awakeFromNib 例程的一部分添加到 NSStatusItem 中。无论出于何种原因,Snow Leopard 都拒绝显示状态项,直到 awakeFromNib 返回。

当我将用于显示状态项的代码移动到 applicationDidFinishLaunching 中时,问题就消失了。

我疯了,你说?我知道,这听起来很傻,但你可以自己尝试使用 sleep()。在 awakeFromNib 例程中准备一个 statusItem 然后 sleep() 。statusItem 在睡眠结束并且 awakeFromNib 返回之前不会出现。

4

1 回答 1

1

请通过http://bugreport.apple.com提交错误(并在此处附加错误编号)。

我可以看到基金会是如何导致这种情况发生的。你的范围是 (0,0) 似乎有点奇怪。您是否尝试在文本存储的开头插入字符串?如果是这样,请-insertAttributedString:atIndex:改用。

如果这修复了糟糕,请仍然提交错误。基金会绝对应该比“哎呀”更有帮助!

于 2009-09-02T20:00:53.527 回答