The error should provide the name of the class that received the unrecognized method and the unrecognized method that was sent.
(1) If you recognize the method name -- if you have written a line (or lines) of code that calls that method -- review the line(s) of code and make sure that the target of the method call is valid, is of the correct type, and hasn't been over released somewhere else.
Often, an unrecognized method invocation error is caused when you have over-released an object somewhere and a new object of the wrong type has taken up residence in the memory of the old object.
(2) If you didn't write a call to that method, then you have other supplied the wrong type of object to some framework method or, again, you have over-released something.
If you suspect over-release, turn on NSZombies or use the Zombie tracking feature in Instruments (yeah, what Peter said).
So, the error is NSTreeControllerTreeNode ... doesn't respond to -copyWithZone:
.
Almost guarantee that indicates that you have tried to shove a tree controller tree node into a dictionary somewhere as a key and the dictionary is trying to copy it. At least, that is most typically what happens.
This still could be an over-release problem where an instance of NSTreeControllerTreeNode happens to be sitting in memory where an NSString used to be.
Search the Xcode documentation for NSZombie
for more information on turning it on in your current version of the dev tools.