2009-03-08 7 views
7

Also habe ich gerade angefangen, in Objective-C, Cocoa und iPhone Entwicklung zu graben. Ich bin auf ein komisches Ding gestoßen, das ich nicht wirklich verstehe.Cocoa/Objective-C NSprocessInfo Seltsamkeit

Ich versuche, Prozessinformationen zu erhalten, Prozessname funktioniert gut, aber die Dinge werden komisch, wenn ich versuche, auch die Prozess-ID zu bekommen.

Hier ist das Stück Code, die ich habe, die offenbar nichts ausgibt an die Konsole:

NSProcessInfo *processInfo = [NSProcessInfo processInfo]; 
NSString *processName = [processInfo processName]; 
int processID = [processInfo processIdentifier]; 
NSLog(@"Process Name: '%@' Process ID:'%@'", processName, processID); 

Nach diesem Code-Block, alle anderen NSLog Anrufe werden ebenfalls ignoriert. Und der Prozess hält die besagt etwas über GDB läuft, und ich bekomme diese in der Konsole:

Loading program into debugger… GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-apple-darwin".Program loaded. sharedlibrary apply-load-rules all Attaching to program: '/Users/jim/Documents/Xcode Projects/CS 193P/Assignment1B (WhatATool)/WhatATool/build/Debug/WhatATool', process 28700. (gdb)

Ich bin wahrscheinlich ein bisschen ein Idiot hier, aber hey, ich habe noch nie messed mit vor Objective-C ... lol _ _whistles innocently_ _

+0

Dies ist die Hausaufgabe von Standford :) Nizza –

Antwort

23

Die Linie

NSLog(@"Process Name: '%@' Process ID:'%@'", processName, processID); 

sollte

NSLog(@"Process Name: '%@' Process ID:'%d'", processName, processID); 
/*       change here^      */ 

als processID sein ist nur ein int und kein Objective-C Objekt

+2

Dank, ich es getestet: D ich fast vergessen hatte, wie es sich anfühlt ein n00b zu sein, ist es ein bisschen Spaß und ein wenig peinlich ... lol – jimeh

+0

du hättest auch stringWithFormat verwenden können, so habe ich die Zuweisung gemacht. –

0

Vielleicht so etwas wie dies, ohne die NSLog zu verwenden und nur printf: Sie müssen die Ausgabe bereinigen kann, aber es sollte kompilieren und arbeiten. Nicht sicher, ob es so ist, wie es getan werden sollte, aber scheint von meinen Tests zu arbeiten.

0

"int" ist nicht Objective-C, löschen Sie das * nach "int" und es sollte in Ordnung sein.

+0

Sie möchten vielleicht bemerken, dass Sie Fredricks Antwort nicht kommentieren und die ursprüngliche Frage nicht selbst beantworten. Auch Sören Kuklau wies in einem Kommentar auf diese Nicht-Antwort bereits auf sein Problem hin. –

0

"do% i" für Ganzzahlen.