2012-06-25 12 views
14

(Ich bin ein Kakao Anfänger und) Ich frage mich, warum wir das tun sollten:Verständnis NSLog Syntax

NSLog(@"this is the variable value: %d",variable); 

und nicht etwa wie folgt:

[NSLog outputThis:@"this is the variable value: %d" param:variable]; 
+1

Weil zweite Anweisung ruft outputThis: param: 'Methode auf' NSLog' Objekt. 'NSLog' ist nur eine Funktion im Cocoa Framework. – Eimantas

+0

ja, aber es könnte eine Klassenmethode für eine Klasse NSLog sein, wie [NSString stringWithString: @ "das ist ein String"]; ? – tahir

+0

NSLog "klingt" nicht nach Klasse. NSLogger wäre die bessere Wahl für einen Klassennamen gewesen. Jetzt ist es nur eine Aktion. – Eimantas

Antwort

18

Ich stimme zu, das ist ziemlich verwirrend, wenn Sie anfangen. Der Hauptgrund ist, dass die NSLog-Methode, wie viele andere in Core Foundation, eher eine C-basierte API als eine Objective-C-API ist. C-ähnliche Funktionen sehen so aus: myFunction (myParameter1, myParameter2).

Alle GUI-Sachen, an die Sie wahrscheinlich gewöhnt sind [UIView presentModalViewController:] usw., basieren auf einer Objective-C-API mit den eckigen Klammern, die Sie für Funktionen gesehen haben (Selektoren in Obj-C). Die Objective-C-Sprache befindet sich oben auf C, sodass Sie beide Stile in den meisten Apps finden.

+0

Apple entscheidet alles, und wir werden es mögen – onmyway133

5

Wie ich es verstehe, NSLog ist keine Objective-C-Funktion, sondern eine in die Cocoa-Grundlage eingebaute C-Funktion. Daher entspricht es grundlegenden C-Funktionen mit variadischen Argumenten.

4

NSLog kann scheinen wie eine Klasse, aber es ist nicht.

NSLog ist eine FoundationKit Funktion für Debug-Anweisungen Druck auf die Konsole. Es wird in NSObjCRuntime.h definiert:

void NSLog(NSString format, ...); 

Es gibt eine gute Menge an Informationen erhalten Sie hier: http://cocoadev.com/wiki/NSLog

EDIT: Wie @fyngyrz wies darauf hin, die Seite ist tot. So here is a wayback-machine version of the page from 2012

+1

Nein, gibt es nicht. Die Seite ist weg. – fyngyrz

+0

@fyngyrz Danke. Bearbeitete die Antwort. – Alladinian