2009-10-17 2 views
2

J'ai suivi le chapitre 8 de Hillegass pour y implémenter l'application RaiseMan. Puis j'ai décidé de suivre le même processus pour implémenter le code pour un exercice dans une classe de programmation Cocoa que je prends, mais j'ai reçu le message d'erreur très cryptique suivant après la construction et l'exécution.Dans Xcode Document App: Pourquoi la méthode init de MyDocument serait-elle appelée deux fois?

Impossible de créer BOOL de l'objet < _NSControllerObjectProxy: 0x100460e30> de la classe _NSControllerObjectProxy

Je ne sais pas ce que ce message d'erreur signifie. Faire une recherche Google a soulevé quelques hits, mais leurs remèdes semblaient être de faire des choses que je faisais déjà. J'ai regardé toutes les connexions et les affectations que j'ai faites dans Interface Builder et rien ne semble évidemment mal.

Je suis donc allé dans le débogueur et j'ai défini un point d'arrêt dans la méthode init de la classe MyDocument et il est appelé deux fois. Comment cela pourrait-il arriver? Que devrais-je rechercher pour que la méthode init soit appelée deux fois? La trace de la pile montre que init est appelée par les fonctions du système que nous n'avons pas écrites nous-mêmes. Pour comparaison, je suis retourné au projet qui suit le chapitre 8 de Hillegass et j'ai défini un point d'arrêt à l'intérieur de la méthode init de la classe MyDocument, et il est appelé une fois (ce à quoi on s'attendrait).

Répondre

6

Impossible de créer BOOL de l'objet <_NSControllerObjectProxy: 0x100460e30> de classe _NSControllerObjectProxy

Il semble que vous avez lié une propriété BOOL à un contrôleur, et non spécifié un modèle chemin de clé. Vous avez probablement lié l'une des liaisons intégrées aux classes d'affichage Cocoa, telles que enabled ou editable.

Regardez à travers votre plume pour les vues dont enabled ou editable vous avez lié, et assurez-vous qu'ils sont tous liés au chemin de clé de modèle correct.

1

Je viens juste de tomber dessus moi-même. Et puis je me suis souvenu avoir vu quelque chose d'étrange auparavant, dont la signification ne m'avait pas frappé à ce moment-là. Ce qui est que dans mon fichier XIB, il y avait un objet "Mon document", en plus de l'objet "Propriétaire du fichier" (ce qui représente réellement le document dans le fichier XIB). Je n'ai aucune idée de comment cela est arrivé, mais je l'ai supprimé dans IB, recompilé, et hop, [MyDocument init] n'est appelé qu'une fois maintenant.

Questions connexes