2009-09-02 2 views
1

J'ai un appel, au sein d'une sous-classe NSTextView, qui ressemble à ceci:« Oops » un message eminating à partir du code d'Apple

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

Cet appel utilisé pour fonctionner correctement et maintenant (après l'installation Snow Leopard) génère un court message dans la console: "Oups". Il ne plante pas, il génère simplement ce message et ne parvient pas à définir le texte correctement. Le message "Oups" vient du code Apple, pas le mien, ce qui est absolument exaspérant.

Quelqu'un peut-il me dire ce qui se passe? Pourquoi le textStorage d'un NSTextView EVER générerait-il ce message?

Je ne sais pas s'il est pertinent que lorsque le message Oops est généré, fullRange est égal à (0,0).

... PLUS TARD ...

Eh bien, je suis parvenu à résoudre ce problème. Cela va sembler fou. Il s'avère que le NSTextView que je travaillais avec a été ajouté à un NSStatusItem dans le cadre d'une routine awakeFromNib. Pour une raison quelconque, Snow Leopard refuse d'afficher l'élément d'état tant que awakeFromNib n'est pas retourné.

Lorsque j'ai déplacé le code pour l'affichage de l'élément d'état dans applicationDidFinishLaunching, le problème s'est dissipé.

Je suis fou, dites-vous? Je sais, cela semble stupide, mais essayez-le en utilisant sleep(). Préparez un statusItem, puis sleep() dans votre routine awakeFromNib. Le statusItem n'apparaîtra pas jusqu'à ce que sleep soit terminé et que awakeFromNib renvoie.

+0

Cela a du sens; vous ne devriez pas vraiment faire quelque chose qui s'attend à ce que le dessin se produise dans -awakeFromNib. Au lieu de cela, c'est pour initialiser la mise en page, etc. Puisqu'il n'y a aucun moyen de savoir qu'il y a plus de choses à éveiller, il n'y a aucun moyen pour que le dessin se produise complètement pendant -awakeFromNib. – bbum

Répondre

1

Veuillez créer un bug via http://bugreport.apple.com (et ajouter le numéro de bogue ici).

Je pouvais voir comment Foundation pouvait provoquer cela. Que votre gamme est (0,0) semble un peu étrange. Essayez-vous d'insérer une chaîne au début du stockage de texte? Si oui, utilisez -insertAttributedString:atIndex: à la place.

Si cela résout l'Oups, s'il vous plaît toujours déposer un bug. La Fondation devrait certainement être plus utile que "Oops"!

+0

Oui, je suis d'accord il est étrange que ma gamme est (0,0) - mais j'ai essayé insertAttributeString: atIndex: et toujours eu le même résultat: "Oops" Je vais déposer un bogue sous peu. – Dennis