In Xcode (3), enable:
Run > Stop on Objective-C Exceptions
run your program in Debug.
Ultimately what is happening is an (objc) object is requested to perform a message which it does not respond to (i.e. is not implemented).
Typically, this happens as a programmer's mistake (at least, for me), such as an argument passed as another type, which slips through a cast, id, or objc_object container (e.g. any collection class - NSArray, NSSet, NSDictionary).
Sometimes this happens if you forget to implement the instance method.
Sometimes this happens if you are testing against an earlier release of the software, which did not implement the instance method (i.e. it was added in a following release).