Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

redchannel

macrumors regular
Original poster
Nov 23, 2008
126
0
I have an example of code that I need help understanding:

#import <Foundation/Foundation.h>

{

int main (int argc, const char *argv [])

NSAutoreleasePool *pool =[ [NSAutoreleasePool alloc] init];

NSLog [@"Testing...\n...1\n...2\n...3");

[pool drain];

retuen 0;

}


is the \n (newline command) another way to say NSLog [@"Insert text here"] without having to type in the NSLog stuff (sorry i dont know the exact terminology of this thing) ?

I know its a new line on the output. When the program launches will it simply say

Testing...
...1
...2
...3 ?


on the scree ? Is this just a program to display text ?
 
Newline is like the enter key. Output after the newline will start on the next line. Without it ..

NSLog (@"One ");
NSLog (@"Two");

produces:
One Two

The program actually does nothing. NSLog writes to the log (usually the console view that is available in XCode) when testing a program in the Debug configuration. In a release configuration NSLog is ignored.

To actually write to the iPhone screen is much more complicated.

If you are interested in learning iPhone or Mac programming, read the stickies and invest in a recomended book. You should be much further than this snippet by the first couple pages.
 
NSLog (@"One ");
NSLog (@"Two");

produces:
One Two
No, it doesn't. It produces something like this:
2009-06-18 17:49:48.729 AppName[7265:20b] One
2009-06-18 17:49:48.730 AppName[7265:20b] Two

whereas
Code:
NSLog(@"Testing...\n...1\n...2\n...3");
produces something like this:
2009-06-18 17:52:49.905 AppName[7304:20b] Testing...
...1
...2
...3
 
Newline characters are one of several special glyphs. These glyphs exist because simply typing in the effect they represent may cause problems in certain situations.

For example, to include a quotation mark, type \". Typing " would confuse the compiler, which would think you meant to close the string. Similarly, new lines can cause errors and the newline character could simply be ignored by the compiler.

And just in case, you were wondering, if you want to type a normal \, type \\. So \\n would show up as \n rather than a newline.
 
In a release configuration NSLog is ignored.

NSLog() works on Release and Debug. If you want it to not work on Release you need to do something like:
Code:
#if DEBUG
#define Log NSLog
#else
#define Log 
#endif
And use Log() instead of NSLog().
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.