Vincent Gable

August 5, 2008

Simplified Logging

Filed under: Cocoa, MacOSX, Objective-C, Programming, Sample Code, Tips, Usability — Tags: , , — Vincent Gable @ 11:44 pm

I have noticed a pattern in my Cocoa code, which I have been able to simplify. I often print out the value of a variable for debugging. 99 times out of 100, the code looks like this: NSLog(@"actionURL = %@", actionURL);, where actionURL is some variable.

But using the macros, I can say LOG_ID(actionURL);. This is shorter, and non-repetitive.

The macros I use to simplify debugging (2008-09-16):

#define FourCharCode2NSString(err) NSFileTypeForHFSTypeCode(err)

#define LOG_4CC(x) NSLog(@”%s = %@”, # x, FourCharCode2NSString(x))
#define LOG_FUNCTION() NSLog(@”%s”, __FUNCTION__)
#define LOG_ID(o) NSLog(@”%s = %@”, # o, o)
#define LOG_INT(i) NSLog(@”%s = %d”, # i, i)
#define LOG_INT64(ll) NSLog(@”%s = %lld”, # ll, ll)
#define LOG_FLOAT(f) NSLog(@”%s = %f”, # f, f)
#define LOG_LONG_FLOAT(f) NSLog(@”%s = %Lf”, # f, f)
#define LOG_OBJECT(o) LOG_ID(o)
#define LOG_POINT(p) NSLog(@”%s = %@”, # p, NSStringFromPoint(p))
#define LOG_RECT(r) NSLog(@”%s = %@”, # r, NSStringFromRect(r))
#define LOG_SIZE(s) NSLog(@”%s = %@”, # s, NSStringFromSize(s))

Look in assert.h for insight on how to roll your own debugging macros.

July 5, 2008

FourCharCode2NSString

Filed under: MacOSX, Objective-C, Programming, Sample Code, Usability — Tags: , , , — Vincent Gable @ 8:13 pm

As I have written before, the best way to convert a FourCharCode to an NSString* for NSLog()ing is to use the NSFileTypeForHFSTypeCode() function. But for the life of me I can’t remember that name, even though I use it about once a month. It’s too long, and it has too little to do with what I’m using it for.

So I have added the line:
#define FourCharCode2NSString(err) NSFileTypeForHFSTypeCode(err)
To my prefix-files, because I can remember FourCharCode2NSString().

UPDATE: (2008-08-06) There is an even easier way.

Powered by WordPress