プリプロセッサディレクティブの文字列化演算子 # を利用する方法がある。
マクロの引数を利用する際に#を付けると、実引数がダブルクォーテーションで囲まれた(C言語の)文字列に置き換わる。
こんな感じでマクロ定義して
#define OBJ_DESCRIPTION(var) [NSString stringWithFormat:@"%s: %@", #var, var]
こんな感じで使うと
NSNumber *hoge = @123;
NSArray *fuga = @[@"foo", @"bar"];
NSLog(@"%@", OBJ_DESCRIPTION(hoge));
NSLog(@"%@", OBJ_DESCRIPTION(fuga));
こんな感じのログが出ます
hoge: 123
fuga: (
foo,
bar
)