Forgive me for a potentially silly question here, but in other programming languages (scripting ones like PHP or Perl) it is often easy to dump everything contained within a variable.
For instance, in PHP there are the var_dump() or print_r() functions. Perl has the Data::Dumper CPAN class, etc etc.
Is there something like this for Objective-C? It would be very convenient in a few cases to be able to dump everything like that, instead of using gdb to inspect each variable.
In Cocoa, there is no ‘dump’ like PHP’s print_r or python’s repr since there is no textual format that ‘represents’ an object as in those languages. If you use
or
or
you will get (logged to console in the first case), the result of
[myObj description], a method defined inNSObjectfor the purpose of printing a description (not a dump) of an object.If you invoke
po myObjin gdb, you get[myObj debugDescription](often the same asdescription, but not always).Classes like
NSArrayandNSDictionaryandNSDataoverridedescriptionto print a pretty useful recursive description of their contents, but the default[NSObject description]prints only the pointer value corresponding to the instance.If you control the code for the types in question, you can override their
descriptionordebugDescriptionmethods to return anything you want. If not, you could override thedescriptionordebugDescriptionmethod using a category, or use a category to define amyDebugDescriptionor some such that you could then invoke from gdb usingpo [myObj myDebugDescription].