2009-09-02 69 views
1

我有一個電話,一個NSTextView的子類中,看起來像這樣:「哎呀呀」的消息來自蘋果代碼eminating

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

這個調用用來做工精細,現在(以後雪豹安裝)生成一個短消息在控制檯中:「糟糕」。它不會崩潰,它只會生成此消息,然後無法正確設置文本。 「糟糕」消息來自蘋果代碼,而不是我的,這絕對令人生氣。

有人可以告訴我發生了什麼事嗎?爲什麼NSTextView EVER的textStorage會生成此消息?

我不知道在生成Oops消息時是否相關,fullRange等於(0,0)。

...後...

嗯,我已經成功地解決這個問題。這聽起來很瘋狂。事實證明,我正在使用的NSTextView作爲awakeFromNib例程的一部分被添加到NSStatusItem中。無論出於何種原因,Snow Leopard拒絕顯示狀態項目,直到awakeFromNib返回。

當我將顯示狀態項的代碼移動到applicationDidFinishLaunching時,問題就消失了。

我瘋了,你說?我知道,這聽起來很愚蠢,但使用sleep()自己嘗試一下。準備一個statusItem,然後在你的awakeFromNib例程中sleep()。在睡眠結束並且awakeFromNib返回之前,statusItem不會出現。

+0

這實際上是有道理的;你不應該做任何期望在-awakeFromNib中發生繪圖的事情。相反,這是爲了初始化佈局等。由於無法知道是否有更多的東西被喚醒,因此在-awakeFromNib期間無法完全進行繪圖。 – bbum 2009-09-03 01:44:29

回答

1

請通過http://bugreport.apple.com(並在此追加bug編號)提交缺陷。

我可以看到基金會可能如何導致這種情況發生。你的範圍是(0,0)似乎有點奇怪。你想在文本存儲的開始處插入一個字符串嗎?如果是這樣,請改用-insertAttributedString:atIndex:

如果修復了糟糕,請仍然提交錯誤。基金會應該比「糟糕」更有幫助!

+0

是的,我同意奇怪的是我的範圍是(0,0) - 但我嘗試過insertAttributeString:atIndex:並且仍然得到相同的結果:「糟糕」 我將很快提交一個bug。 – Dennis 2009-09-02 20:24:47

相關問題