3

I Have a question about Xcode and Objective-C.

I want to make this simple action in Xcode:

If I type this :

NSLog(@"something else");

I want Xcode to write (or execute after compile):

NSLog(@"[%@] something else", NSStringFromClass([self class]));

Another way could be for Xcode 4 to suggest this in the autocomplete menu, when I type NSLog...

一二三
  • 21,059
  • 11
  • 65
  • 74
Pixman
  • 599
  • 6
  • 17
  • BTW, for debugging I suggest using `@"%s: something else", __FUNCTION__` instead, it will output something along the line of `- [MyClass myMethod]: something else`. – DarkDust May 03 '11 at 07:02

3 Answers3

8

Here is a complete set of Log #define directives (including ULog, a UIAlertView based Logging feature)

// DLog will output like NSLog only when the DEBUG variable is set

#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#   define DLog(...)
#endif

// ALog will always output like NSLog

#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

// ULog will show the UIAlertView only when the DEBUG variable is set 

#ifdef DEBUG
#   define ULog(fmt, ...)  { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__]  delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }
#else
#   define ULog(...)
#endif

As written by Ciryon, just put them in your precompiled header (.pch) file.

(source: http://overbythere.co.uk/blog/2012/01/alternatives-nslog)

Alex Zavatone
  • 4,106
  • 36
  • 54
Pascal
  • 15,257
  • 2
  • 52
  • 65
1

You probably rather want to make a macro and put it in your precompile header (.pch) file.

#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#   define DLog(...)
#endif

(Taken from this blog post)

Ciryon
  • 2,637
  • 3
  • 31
  • 33
0

Why not you use some other very excellent alternative options available like SOSMAX or NSLogger as i have written about them here http://learning-ios.blogspot.com/2011/05/better-nslog-ing.html

object2.0
  • 891
  • 1
  • 12
  • 12