Az Objective-C programozási nyelv

NSLog

Általános leírás

void NSLog(NSString format, ...);

Az NSLog változók értékeinek kiírására szolgál a konzolra. Elsősorban az alkalmazás debuggolására használják.

Egyszerű szöveg kiírása NSLogon keresztül

A @"…" … részén megadjuk a kiírni kívánt szövegrészt.

NSLog(@"Egyszeru szoveg kiirasa");

Boolean értékek kiírása NSLogon keresztül

Jelölésére a %@ jel szolgál.

BOOL mBool; //BOOL alapértelmezett értéke NO. NSLog(@"A bool erteke: %@\n", (mBool ? @"YES" : @"NO"));

int, float, double és long értékek kiírása NSLogon keresztül

Az int, long jelölésére %i, míg a float, double jelölésére a %f szolgál. A float típusnál ki lehet kötni, hogy csak a 2 decimális helyérték jelenjen meg: %.2f -el. A double típus reprezentálható a %e ,%E jelekkel is, ezekben az esetekben az exponenciális forma jelenik meg.

int num=90; float _num=90; double number=700.000; long mlong=30; NSLog(@"The value of integer num is %i", num); NSLog(@"The value of Long number is %i", mlong); NSLog(@"The value of float num is %.2f", _num); NSLog(@"The value of double num is %f", number);

NSString kiírása NSLogon keresztül

Ebben az esetben a %@ jelet kell beírni a jelölésére, mivel az NSString is egy objektum. Habár a %s a C stílusú printf-ben működik, ez esetben nem megfelelő NSStringek kiírására.

NSString *string = @”Hello”; NSLog(@"Valami szoveg ertek: %@", string);

NSArray, NSDate, NSInteger, NSDictionary kiírása NSLogon keresztül

Szintén a %@ jellel jelölve kiírható az NSArray, NSDate, NSInteger, NSDictionary objektum tartalma.

Az NSLog ebben az esetben úgy működik, hogy kér minden objektumtól egy magát leíró stringet és elküldi az objektumoknak a –description metódust. Amennyiben az adott osztály nem írja felül ezt a metódust, úgy az NSObject –description metódusnak megfelelően fog kiíródni, amely az alábbi formátumú: <classname : address>

NSArray

NSArray *arr = [[NSArray alloc] initWithObjects:@"Me", @"Myself", @"I", @"and you", nil]; NSLog(@"A tomb tartalma%@",arr);

A tomb tartalma ( Me, Myself, I, "and you" )

NSDate

NSDate *today = [NSDate date]; NSLog(@"the current date is %@",today);

NSInteger

NSInteger *mnsinteger = 42; NSLog(@"NSInteger value :%@", mnsinteger);

NSDictionary

NSDictionary *dictionary; NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", nil]; NSArray *objects = [NSArray arrayWithObjects:@"How", @"are", @"you", nil]; dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; for (id key in dictionary) { NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]); }

Eredmény:
2009-07-29 15:42:34.634 DataTypes[560:10b] key: key1, value: How
2009-07-29 15:42:34.636 DataTypes[560:10b] key: key2, value: are
2009-07-29 15:42:34.639 DataTypes[560:10b] key: key3, value: you

Egyéb típusú értékek kiírása NSLogon keresztül

Hexadecimális értékek kiíírása: %x, %X

NSLog(@"%s\t%s\t0x%08x", "hex", "value", 0x1243);

Előjel nélküli int kiírása: %u
Hatod számrendszerbeli szám kiírása: %o
Pointer kiírása: %p
C string kiírása (bytes): %s
C string kiírása (unichar): %S
Karakter kiírása: %c
Unichar kiírása: %C
Pascal string kiírása: %.s (további két argumentum szükséges: pass pstr[0], pstr+1)

További információért: man 3 printf. Az NSLog megért mindenféle printf formátumú azonosítót.

NSLog alternatívák

XLog

Az egyik alternatíva, ha túl bőnek találjuk a headert, illetve ha szeretnénk tudni mennyi idő telt el az előző logolás óta.

Bővebb információ: http://cocoadev.com/wiki/XLog

ZNLog

LibComponentLogging egy kicsi osztálykönyvtár Mac OS X és iPhone OS Objective-C alkalmazások számára, amely naplózási szinteket nyújt a különböző napló komponensek azonosítására az alkalmazáson belül. Továbbá van egy aktív naplózási szint minden napló komponensre annak érdekében, hogy engedélyezve/tiltva legyenek a naplózások az alkalmazás bizonyos részein. Ezen felül különböző naplózási háttérprogramok érhetők el, például a naplóüzenetek elküldése az Apple System Log létesítménynek (ASL).

Bővebb információ: http://codebeach.org/code/show/44

NSLogger

NSLogger egy nagy teljesítményű naplózó program, amely megjeleníti a Mac OS X or iOS (iPhone OS) – en futtatott kliens által kibocsájtott traceket. Felváltja a megszokott NSLog() alapú traceket és hatékony kiegészítéseket nyújt, például: kijelző szűrés, kép és bináris naplózás, trace pufferelés, időmérési információk, stb. A fenti LibComponentLogging – nak van egy backendje, amellyel el tudja küldeni az NSLoggernek a naplóit.

Bővebb információ: https://github.com/fpillet/NSLogger