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...

1
  • BTW, for debugging I suggest using @"%s: something else", __FUNCTION__ instead, it will output something along the line of - [MyClass myMethod]: something else. Commented May 3, 2011 at 7:02

3 Answers 3

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)

Sign up to request clarification or add additional context in comments.

Comments

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)

2 Comments

The semicolon between the @"%s [Line %d] " and fmt makes this error out. It should just be a space.
Thanks, fixed in case someone would copy/paste it.
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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.