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